【发布时间】:2011-11-09 11:37:30
【问题描述】:
我正在使用 php gettext 实现根据用户偏好获取网站本地化(通过分析 HTTP_ACCEPT_LANGUAGE)。
我测试了我构建的翻译系统,它工作正常,但我刚刚发现(在我添加了其他语言之后)当我尝试使用不同的语言时它不起作用,返回未翻译的字符串。
我得到了正确的语言环境(使用德语设置进行调试,我得到它使用的是 de_DE),并且我有正确的 .mo 文件 (locale/de_DE/LC_MESSAGES/messages.mo)。
我正在使用这段代码来设置翻译环境:
putenv("LC_ALL=" . $g_locale);
setlocale(LC_ALL, $g_locale);
bind_textdomain_codeset('messages', 'UTF-8');
bindtextdomain('messages', './locale'); // echo here makes sure it's getting the right absolute path
textdomain('messages');
其中 $g_locale 是“de_DE”。
我尝试了以下几种解决方案,我已经安装了德语语言环境,并且 locale -a 告诉 de_DE.UTF-8 已正确安装。我也重启了apache2。
但是消息仍然没有翻译成除 en_US 之外的任何语言。
这种行为的原因可能是什么? 我该怎么做才能让它发挥作用?
谢谢。
编辑:我忘了说它也可以使用默认系统语言(意大利语)。 这似乎是一个错误配置,但我运行了正确的命令(sudo apt-get install language-pack-de-base)。
【问题讨论】:
标签: php