我管理自己的网站与gettext
合作。目前只有英语到匈牙利语的翻译,它的工作就像一个魅力,一个半完成的俄语翻译,只是没有加载。
我通过url传递变量,比如url.php?lang = hu。如果我将俄语翻译加载到匈牙利语翻译的文件夹中,它会做一些但只显示???字符。我知道,我需要将它设置为utf-8,我在这里找到了一堆与此主题相关的问题,但我无法解决这个问题。我的文件夹是:
hu_HU> LC_MESSAGES> messages.po / mo
ru_RU> LC_MESSAGES> messages.po /月
代码是:(也许这会更容易替换为“$ locale = $ _GET ['lang'];”:))
switch ($lang) {
case 'hu':
$locale = "hu_HU";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");
break;
case 'ru':
$locale = "ru_RU";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale.'.utf8');
bindtextdomain("messages", "./locale");
textdomain("messages");
break;
}
** 编辑* **
在我读完这么多之后,我打电话给我的托管公司。他们打开了所要求的语言。现在俄罗斯人正在工作,但它不承认这些信件。放置元字符集正在解决问题,但在这种情况下,特殊字符,如öüóőúéáű不能正确显示。我试图在setlocal周围将代码更改为utf8,但没有成功。什么可以解决方案?
$locale = "ru_RU.UTF-8";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale, 'UTF-8');
bindtextdomain("messages", "locale");
textdomain("messages");
我的文件夹结构是:ru_RU.UTF-8> LC_MESSAGES> messages.po /月