我正在处理这个问题很长一段时间,这不是我的第一个问题,但我仍然无法让本地化工作正常。 我使用WAMP服务器和php gettext。 我用来演示我的问题的简单代码:
/* 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和.po。 mo文件的翻译如下:
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字符串和目录名的信息?
答案 0 :(得分:1)
尝试像这样做你的代码:
setlocale(LC_ALL, 'ro_RO','Romanian');
它在我的项目中起作用
答案 1 :(得分:0)
你可以提供帮助:
# ===============================
# = DESERIALIZATION CUSTOMIZATION
# ===============================
spring.jackson.deserialization.USE_BIG_DECIMAL_FOR_FLOATS=true
您可以使用计算机中存在的语言。
locale -a