1

我似乎无法让 gettext 工作,在这里。

我正在使用 MAMP Pro 并phpinfo();说 gettext 已启用。

我遵循了本教程:http: //zez.org/article/articleview/42/1/

  1. 我在我的代码中声明了我的字符串,如下所示:_('test string');
  2. 然后我跑了xgettest -L PHP test.php,它生成了我的messages.po文件。
  3. 我在poedit中打开了这个文件并翻译了我的字符串,然后保存了这个文件,这就是一个messages.mo文件。
  4. 我拿了两个文件.po并将.mo它们移动到[webroot]/locale/es/LC_MESSAGES/(在这种情况下,我的翻译是西班牙语)
  5. 在我的代码中,我设置了以下内容:

    $lang = $_SESSION['lang']; // available to all views that include this file

    putenv('LC_ALL='.$lang);

    bindtextdomain('messages','./locale');

    textdomain('messages');

    ...我可以轻松地在和$_SESSION['lang']之间切换。enes

  6. 我重新加载我的页面,然后单击切换到的链接es,但我的字符串仍然显示为英文版本而不是西班牙文版本。切换回en显示没有变化;它总是英文版本。

我在任何地方都没有收到错误消息,所以我对为什么会遇到这个问题有点迷茫。谁能给我一些指导/帮助?我错过了什么?

4

2 回答 2

1

您还需要在服务器上安装相应的语言文件,如下所示:

cat /usr/share/i18n/SUPPORTED |grep -i "es_ES" > /var/lib/locales/supported.d/es
cat /usr/share/i18n/SUPPORTED |grep -i "nl_NL" > /var/lib/locales/supported.d/nl
cat /usr/share/i18n/SUPPORTED |grep -i "de_DE" > /var/lib/locales/supported.d/de

现在您安装了西班牙语、荷兰语和德语。完成后,运行dpkg-reconfigure locales就完成了。=)

于 2011-06-06T14:50:53.953 回答
0

似乎问题可能出在poedit上。最初,我所有的西班牙语翻译都标记为“模糊”。如果我从它们中删除“模糊”,它们就会像应有的那样显示在我的网页上。

我不认为这是正常的行为,但是,嘿,至少它有效。

于 2009-11-21T18:27:06.637 回答