PHP:Gettext问题

时间:2009-11-21 17:54:47

标签: php locale gettext

我似乎无法在这里使用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显示没有变化;它总是英文版。

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

2 个答案:

答案 0 :(得分: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 ,您就完成了。 =)

答案 1 :(得分:0)

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

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