服务器正在忽略我的设置区域设置


Server ignoring my setlocale settings

我已经处理这个问题很长时间了,这不是我的第一个问题,但我仍然无法正确地进行本地化。我使用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和。mo文件的翻译如下:

msgid "string"
msgstr "string SK"

sk_SK文件夹中或者这个

msgid "string"
msgstr "string RO"

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

文档的外观:

罗马尼亚.1250字符串SK

因此,您可以清楚地看到-我将locale()设置为罗马尼亚语,但我的文本是使用sk_SK目录中的翻译进行翻译的。我做错了什么?

有没有一些函数可以用来获取服务器希望找到的$locale字符串和目录名的信息?

试着这样做你的代码:

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

它在我的项目中起了作用

您可以帮助:

locale -a

你可以在你的电脑里找到存在的语言。

 sudo locale-gen pt_PT
 sudo locale-gen pt_PT.utf8
 sudo update-locale