Как использовать gettext в PHP? - PullRequest
2 голосов
/ 08 марта 2010

У меня есть файл dk.po и dk.mo в папке lang в моем веб-каталоге.

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

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

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

// Choose domain
textdomain("dk");

Ответы [ 3 ]

5 голосов
/ 17 марта 2010

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

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 голосов
/ 08 марта 2010

это работает для меня мой файл называется 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 голосов
/ 08 марта 2010

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

Документы: http://framework.zend.com/manual/en/zend.translate.using.html

...