gettext不起作用

时间:2015-08-03 11:21:41

标签: php translation

我尝试使用" 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");

在这个脚本之后,一切似乎都可以进入变种。

我有这个翻译目录:

enter image description here

在这些消息文件中,我可以看到正确的翻译。但是当我尝试:

<?php echo gettext('something') ?>

它没有翻译。

我一定不能远离解决方案,但我会感激任何帮助。

NB: 它与LARAVEL 4.2一起使用 我使用poedit来构建messages.mo

由于

多米尼克

1 个答案:

答案 0 :(得分:0)

尝试在setlocaletextdomain来电后使用bindtextdomain设置区域设置:

$locale = 'fr_FR';
setlocale(LC_ALL, "$locale.utf8");
setlocale(LC_NUMERIC, "en_US.utf8"); // for sprintf() etc.

选定的区域设置在系统中非常重要,其名称与传递给setlocale的字符串完全相同。对于上面的示例,这意味着fr_FR.utf8语言环境必须存在。您可以使用

检查可用的区域设置
locale -a

在命令行上。