我处理这个问题很长一段时间,这不是我的第一个问题,但仍然无法让本地化工作正常。 我使用WAMP服务器和php gettext。 一个简单的代码我为我的问题的示范制作:服务器忽略我的setlocale设置
/* dirs */
$directory = realpath('../locale');
$domain = 'messages';
/* trying to find out correct setting - last one is winner */
$locale ="ro";
$locale ="ro_utf8";
$locale ="ro_RO";
$locale ="ro_RO.UTF-8";
$locale ="Romanian_Romania.1250";
putenv("LANG=".$locale);
print setlocale(LC_ALL, $locale);
setlocale(LC_ALL, $locale);
bindtextdomain($domain, $directory);
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
/* STRING TO BE TRANSLATED */
echo _('string');
在../locale
目录中也有很多这样的文件夹 - $language_name/LC_MESSAGES/
。这些包含相应的.po和。莫文件,像这样翻译:
msgid "string"
msgstr "string SK"
在sk_SK
文件夹 或本
msgid "string"
msgstr "string RO"
在ro
,ro_RO
,ro_RO.UTF8
,ro_RO.UTF-8
,romanian
,Romanian_Romania
,Romanian_Romania.1250
文件夹。
什么文件看起来像:
Romanian_Romania.1250串SK
所以,你可以清楚地看到 - 我的setLocale()到罗马尼亚,但我文本使用翻译翻译于sk_SK
目录。我究竟做错了什么?
是否有一些函数可用于获取有关$ locale字符串和我的服务器期望找到的目录名称的信息?