如果未定义翻译,则gettext使用标识符而不是英语

时间:2013-01-18 18:49:01

标签: php translation gettext

我遇到了gettext的问题,如果用户以西班牙语访问我的网站并且该语言的翻译不可用,则会显示标识符而不是英文翻译?

有没有办法避免这种情况?

以下是我的代码的一些重要部分:

$lc = 'es_ES.utf8';
putenv('LC_ALL='.$lc);
setlocale(LC_ALL, $lc);


$languageFileName = 'default';
bindtextdomain($languageFileName, ROOT_PATH.'/locale');
bind_textdomain_codeset($languageFileName, 'UTF-8');
textdomain($languageFileName);

这是我的树枝:

-en_US
--LC_MESSAGES
---default.mo
---default.po
-es_ES
--LC_MESSAGES
---default.mo
---default.po
-fr_FR
--LC_MESSAGES
---default.mo
---default.po

请注意,我使用的是PHP 5.4,而我的系统是法语。

1 个答案:

答案 0 :(得分:1)

我可能会检查所需的翻译是否可用,如果没有,请设置某个默认的区域设置(可能是en_US)。

另一种方法是使用默认语言消息(即英语)作为标识符本身。只要系统显示“标识符”,用户就会自动看到英文文本。

(已添加2013-01-31:)

设置区域设置

$locale = "en_US";

putenv("LANG=$locale");
putenv("LC_MESSAGES=$locale");
putenv("LC_NUMERIC=$locale");
putenv("LC_ALL=$locale");

$setlocale = setlocale(LC_MESSAGES, $locale);
$setlocale = setlocale(LC_TIME, $locale);
$setlocale = setlocale(LC_NUMERIC, $locale);
$setlocale = setlocale(LC_ALL, $locale);