我已经处理这个问题很长时间了,这不是我的第一个问题,但我仍然无法正确地进行本地化。我使用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"
在ro
、ro_RO
、ro_RO.UTF8
、ro_RO.UTF-8
、romanian
、Romanian_Romania
、Romanian_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