我遇到了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,而我的系统是法语。
答案 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);