0

在阅读有关它的文章后,我第一次尝试 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() 函数中的路径可能是错误的。我真的希望我能在这方面得到一些帮助。

提前致谢。

4

3 回答 3

1

第一种可能性:

  1. 您必须检查目录属性(在 POedit 程序中打开 .po 文件,然后选择 Menu 'Catalog'->'Properties' 或只需 Alt+Enter,然后检查 Sources Path
  2. 检查基本路径是否正确参考 C:\Users\HS\SkyDrive\Webkodning\wamp\www\test\
  3. 确保你已经添加了“。” (不带引号)在路径中

第二种可能:

当您测试代码时,使用较低的字符串参数作为语言环境(de_de 不是 de_DE),例如 http:\url\test.php?locale=de_de

第三种可能:

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

希望它会有所帮助

于 2013-08-26T08:46:16.130 回答
1

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

好吧,启动 PoEdit 并转到Catalog -> Update from sources。如果它被禁用,你还没有告诉 PoEdit 去哪里看所以去目录- >属性并选择源路径选项卡。您也可以转到“来源关键字”选项卡并添加您的翻译关键字。

于 2013-09-11T10:40:03.597 回答
0

要记住的重要一点:不要忘记在 .po 文件中设置字符集!例如:

“内容类型:文本/纯文本;字符集=UTF-8\n”

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

正因为如此,我浪费了很多时间来调试我的代码,测试人们通过本手册和互联网提出的每一个小改动:

于 2015-07-14T04:25:16.507 回答