2

我对 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,并且我的系统是法语的。

4

1 回答 1

1

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

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

(添加于 2013 年 1 月 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);
于 2013-01-30T11:44:39.150 回答