2010-03-08 2 views
2

У меня есть файл dk.po и dk.mo в папке lang в моем webdir.Как использовать gettext в php?

Как я могу использовать этот файл? Я пробовал все, но я не могу заставить его работать.

// Lang 
putenv('LC_ALL=dk'); 
setlocale(LC_ALL, 'dk'); 

// Specify location of translation tables 
bindtextdomain("dk", ROOT .'lang'); 

// Choose domain 
textdomain("dk"); 
+2

Мне интересно, нужно ли вызывать putenv ('...'), когда setlocale вызывается раньше? – Leto

+0

@Leto, как я понял, вызов putenv для совместимости Windows. – Merijn

ответ

5

Я работаю с этим уже:

setlocale(LC_ALL, 'ar_LY.utf8'); 
bindtextdomain("trans", $_SERVER["DOCUMENT_ROOT"].'/trans/locale'); 
textdomain("trans"); 

языковой файл путь:

/var/www/trans/locale/ar_LY/LC_MESSAGES/trans.mo 

и я думаю (не уверен), что вы должны использовать одинаковые пути!

2

это работает для меня мой файл называется messages.mo

static function initialize_i18n() { 
    $locale=App::$locale;   
    $locales_root = App::$root."locale"; 
    putenv('LANG='.$locale); 
    putenv('LANGUAGE='.$locale); 
    putenv('LC_ALL='.$locale);  
    putenv('LC_MESSAGES='.$locale); 
    setlocale(LC_ALL, $locale.".utf-8"); 
    $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages-*.mo'); 
    $current = basename($domains[0],'.mo'); 
    $timestamp = preg_replace('{messages-}i','',$current); 
    bindtextdomain("messages",$locales_root); 
    textdomain("messages"); 
}  
+0

hmmm, я не совсем понимаю:/у меня есть файл в этой папке /var/www/domain.com/lang/dk/dk.mo вы можете сделать выборку из этой информации? – ParisNakitaKejser

+0

Мне жаль моих переменных .. замените $ locale «lang/dk» и App :: $ root с «/var/www/domain.com/» –

-1

Я бы серьезно рекомендуем использовать Zend_Translate для этого, как вы можете столкнуться с множеством несоответствий с locales на различных типах систем ,

Docs: http://framework.zend.com/manual/en/zend.translate.using.html

+0

если у меня есть большой проект, могу ли я перевести zend в этот ? или это будет трудно? – ParisNakitaKejser

+0

Просто возьмите всю библиотеку Zend и включите только класс Zend Translate, и вы должны быть хорошими. –

+0

Хорошо, и все мои функции gettext() все еще работают? :) – ParisNakitaKejser

 Смежные вопросы

  • Нет связанных вопросов^_^