如何在PHP中使用gettext?

时间:2010-03-08 13:05:36

标签: php gettext

我的webdir中的文件夹lang中有一个文件dk.podk.mo

我该如何使用此文件?我已经尝试了所有,但我无法让它工作。

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

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

// Choose domain
textdomain("dk");

3 个答案:

答案 0 :(得分: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

我认为(不确定)你必须使用相同的路径!

答案 1 :(得分: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");
}    

答案 2 :(得分:-1)

我会认真地建议使用Zend_Translate,因为在各种类型的系统上,locales会遇到很多不一致的问题。

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