如何解决gettext设置不起作用
| 我的gettext工作正常,但是现在突然不翻译了。我知道发生了什么事。我正在尝试使用/sys/locale/no_NO/LC_MESSAGES/messages.po
将页面翻译成挪威语。
/public/home.php
$locale = \"en_US\";
if (isSet($_COOKIE[\'lang\'])) $locale = $_COOKIE[\'lang\'];
putenv(\"LC_ALL=$locale\");
setlocale(LC_ALL,$locale);
bindtextdomain(\"messages\",\"../sys/locale\");
textdomain(\"messages\");
echo \"<p>locale: \" . $locale . \" \";
echo gettext(\"Home\");
exit();
打印出来
should2ѭ我应该是ѭ3
解决方法
我看到您正在与挪威人作战。我也遇到了Debian服务器的问题,该服务器仅支持nb_NO和nn_NO,但不支持no_NO。
解决方案是使用语言环境名称的确切名称作为文件夹和设置:
确保安装了语言环境:
$ locale -a
C
POSIX
en_US.utf8
nb_NO.utf8
nn_NO.utf8
因此,挪威语bokmål的php设置:
setlocale(LC_ALL,\'nb_NO.utf8\');
putenv(\'LANGUAGE=nb_NO.utf8\');
PO文件的路径应具有相同的名称,例如:
./i18n/nb_NO.utf8/LC_MESSAGES/messages.po
我想同样的解决方案将适用于Ubuntu。
,使用日语时,我必须执行以下操作:
putenv(\"LANG=ja_JP.UTF-8\");
setlocale(LC_MESSAGES,\'ja_JP.UTF-8\');
bindtextdomain(\'messages\',\'../locale\');
bind_textdomain_codeset(\'messages\',\'UTF-8\');
textdomain(\'messages\');
使用其他语言时,我发现我不必总是添加编码后缀,这是非常不一致的。同样,当\“ en \”工作正常时,我不能仅使用\“ ja \”。
除非/usr/share/i18n/SUPPORTED
中列出了语言环境,否则setlocale
将返回false,但是尽管有错误,翻译仍然可以正常工作。
,您可能需要重新配置语言环境:
安装debconf(即以root身份运行apt-get update然后apt-get install debconf)
以root身份运行dpkg-reconfigure语言环境
这段代码对我有用:
//Put this in cookie for example
$lang = GetPrefLanguage($_SERVER[\"HTTP_ACCEPT_LANGUAGE\"]);
$language = $lang . \'.utf8\';
setlocale(LC_ALL,$language);
// Set language
putenv(\'LANG=\'.$language);
// Specify location of translation tables
bindtextdomain(\'traductions\',dirname(__FILE__).\'/locale\');
// Choose domain
textdomain(\"traductions\");
// Translation is looking for in ./locale/xx_XX/LC_MESSAGES/traductions.mo now
/*GET Pref language */
function GetPrefLanguage($str_http_languages)
{
$lang = substr($str_http_languages,2);
switch($lang) {
case \'fr\':
return \'fr_FR\';
break;
case \'de\':
return \'de_DE\';
break;
case \'en\':
return \'en_US\';
break;
default:
return \'en_US\';
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。