我尝试使用" gettext"在我的应用程序中没有成功。
这是我初始化某些内容的文件:
//methode gettext
switch (Input::get('langue')) {
case 'fr_FR': $boo_retour_putenv = putenv("LANG=fr_FR");
break;
case 'en_GB': $boo_retour_putenv = putenv("LANG=en_GB");
break;
case 'de_DE': $boo_retour_putenv = putenv("LANG=de_DE");
break;
}
// comment s'appelle le fichier contenant les traductions ?
$stg_retour_textdomain = textdomain("messages");
// où se trouve le fichier contenant les traductions ?
$stg_retour_bindtextdomain = bindtextdomain("messages", app_path().DIRECTORY_SEPARATOR."lang");
// préciser ici que le fichier des traductions est en codage UTF-8
$stg_retour_bind_textdomain_codeset = bind_textdomain_codeset("messages", "UTF-8");
在这个脚本之后,一切似乎都可以进入变种。
我有这个翻译目录:
在这些消息文件中,我可以看到正确的翻译。但是当我尝试:
<?php echo gettext('something') ?>
它没有翻译。
我一定不能远离解决方案,但我会感激任何帮助。
NB: 它与LARAVEL 4.2一起使用 我使用poedit来构建messages.mo
由于
多米尼克
答案 0 :(得分:0)
尝试在setlocale
和textdomain
来电后使用bindtextdomain
设置区域设置:
$locale = 'fr_FR';
setlocale(LC_ALL, "$locale.utf8");
setlocale(LC_NUMERIC, "en_US.utf8"); // for sprintf() etc.
选定的区域设置在系统中非常重要,其名称与传递给setlocale
的字符串完全相同。对于上面的示例,这意味着fr_FR.utf8
语言环境必须存在。您可以使用
locale -a
在命令行上。