服务器忽略我的setlocale设置

时间:2012-09-04 11:19:56

标签: php locale wamp gettext

我正在处理这个问题很长一段时间,这不是我的第一个问题,但我仍然无法让本地化工作正常。 我使用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"

roro_ROro_RO.UTF8ro_RO.UTF-8romanianRomanian_RomaniaRomanian_Romania.1250个文件夹中。

看起来像什么文件:

  

Romanian_Romania.1250字符串SK

所以你可以清楚地看到 - 我setlocale()到罗马尼亚语,但我的文本是使用sk_SK目录中的翻译翻译的。我做错了什么?

我是否可以使用一些函数来获取有关我的服务器期望找到的$ locale字符串和目录名的信息?

2 个答案:

答案 0 :(得分:1)

尝试像这样做你的代码:

setlocale(LC_ALL, 'ro_RO','Romanian'); 

它在我的项目中起作用

答案 1 :(得分:0)

你可以提供帮助:

# =============================== # = DESERIALIZATION CUSTOMIZATION # =============================== spring.jackson.deserialization.USE_BIG_DECIMAL_FOR_FLOATS=true

您可以使用计算机中存在的语言。

locale -a