我在阅读有关它的文章后第一次尝试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()中的路径 - 我错了。我真的希望我能在这方面获得一些帮助。
提前致谢。
答案 0 :(得分:1)
第一种可能性:
第二种可能性:
当您测试代码时,使用较低的字符串参数(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文件。
正因为如此,我浪费了大量时间来调试我的代码,测试人们对本手册和互联网建议的每一个小改动: