Gettext和poEdit不起作用

时间:2013-08-13 14:03:08

标签: php translation gettext poedit

我在阅读有关它的文章后第一次尝试gettext和poedit。 Gettext已启用 - 这不是问题。问题是当我使用poEdit时。我将开始向您展示我的文件:

#localization.php

$locale = "de_DE";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");

#test.php

echo _("Welcome to my test page");

我打开了poEdit并保存了一个messages.po文件。现在,poEdit应该自己扫描文件并显示应该翻译的所有字符串。但是,似乎没有任何东西出现。这是我的路径:

C:\Users\HS\SkyDrive\Webkodning\wamp\www\test\ <- Files in this folder
C:\Users\HS\SkyDrive\Webkodning\wamp\www\test\locale\de_DE\LC_MESSAGES <- messages.po in this folder

我认为问题是路径(保存目录时)。路径怎么样?或者也许我在bindtextdomain()中的路径 - 我错了。我真的希望我能在这方面获得一些帮助。

提前致谢。

3 个答案:

答案 0 :(得分:1)

第一种可能性:

  1. 您必须检查目录属性(在POedit程序中打开.po文件,然后选择菜单'目录' - >;'属性'或只是Alt + Enter,并检查源路径
  2. 检查基本路径是否正确请参阅C:\ Users \ HS \ SkyDrive \ Webkodning \ wamp \ www \ test \
  3. 确保您已添加“。” (路径中没有引号)
  4. 第二种可能性:

    当您测试代码时,使用较低的字符串参数(de_de not de_DE),如htttp:\ url \ test.php?locale = de_de

    第三种可能性:

    确保poedit已生成.mo文件,如果已经生成,则尝试重新启动WAMP服务器

    希望它会有所帮助

答案 1 :(得分:1)

好的,您希望PoEdit为您扫描文件而不是使用gettext实用程序 xgettext

好吧,启动PoEdit并转到目录 - &gt; 从来源更新。 如果它被禁用,你还没有告诉PoEdit在哪里看,所以转到目录 - &gt; 属性并选择源路径选项卡。您也可以转到来源关键字标签并添加翻译关键字。

答案 2 :(得分:0)

要记住的重要事项: 不要忘记在.po文件中设置charset! 例如:

&#34;内容类型:text / plain;字符集= UTF-8 \ n&#34;

然后,PHP将能够使用msgfmt从.po文件WITH CHARSET SET中找到您生成的.mo文件。

正因为如此,我浪费了大量时间来调试我的代码,测试人们对本手册和互联网建议的每一个小改动: