【发布时间】:2009-11-21 17:54:47
【问题描述】:
我似乎无法让 gettext 工作,在这里。
我正在使用 MAMP Pro,phpinfo(); 说 gettext 已启用。
我遵循了这个教程:http://zez.org/article/articleview/42/1/
- 我在我的代码中声明了我的字符串,如下所示:
_('test string'); - 然后我运行
xgettest -L PHP test.php,它生成了我的messages.po文件。 - 我在poedit 中打开了这个文件并翻译了我的字符串,然后保存了文件,生成了一个
messages.mo文件。 - 我将
.po和.mo文件都移到了[webroot]/locale/es/LC_MESSAGES/(在这种情况下,我的翻译是西班牙语) -
在我的代码中,我设置了以下内容:
$lang = $_SESSION['lang']; // available to all views that include this fileputenv('LC_ALL='.$lang);bindtextdomain('messages','./locale');textdomain('messages');...
$_SESSION['lang']我可以在en和es之间轻松切换。 我重新加载我的页面,然后单击切换到
es的链接,但我的字符串仍然显示为英文版本而不是西班牙文版本。切换回en显示没有变化;它总是英文版本。
我在任何地方都没有收到错误消息,所以我有点不知道为什么会出现这个问题。谁能给我一些指导/帮助?我错过了什么吗?
【问题讨论】:
-
尝试硬编码“es”,然后我们就会知道这是 i18n 的问题或只是会话混乱。
-
或者尝试修改英文翻译。
-
"es" 硬编码效果没有变化。
-
好的,我在修改英文翻译时确实看到了变化。现在呢?
-
@neezer:所以,您使用了其中一种翻译(英文),但您在代码中混淆了 smg。