comment utiliser gettext en php?

j'ai un fichier dk.po et dk.mo dans folder lang dans mon webdir.

comment utiliser ce fichier? J'ai tout essayé, mais je ne peux pas le faire fonctionner.

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

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

// Choose domain
textdomain("dk");
2
demandé sur hakre 2010-03-08 16:05:36

3 réponses

je travaille déjà avec cela:

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

le chemin du fichier de langue:

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

et je crois (pas sûr) que vous devez utiliser les mêmes chemins!

5
répondu Wesam Alalem 2010-03-17 13:35:10

ça marche pour moi mon fichier s'appelle 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
répondu Luca Rocchi 2010-03-08 13:24:47

je recommande sérieusement d'utiliser Zend_Translate pour cela car vous pouvez rencontrer beaucoup d'incohérences avec locales sur différents types de systèmes.

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

-1
répondu meder omuraliev 2010-03-08 13:27:35