使用 Poedit 创建 POT 文件

Posted

技术标签:

【中文标题】使用 Poedit 创建 POT 文件【英文标题】:Create POT file with Poedit 【发布时间】:2012-02-24 02:04:31 【问题描述】:

我正在拼命地为我在 php 中的新应用程序创建一个目录 (.in)。 1)我创建了一个文件“trans.php”,我把所有要翻译的值放在里面

例如,这是我的文件:

<?php 

echo _e('SORTIR LA NUIT');

?>

2)我打开 Poedit,在“路径”中输入了我输入的内容(见图) 然后我保存我的文件“php”的相同位置。

3) 当我点击“更新”时,出现以下错误:

12:25:43: No files found in: /Users/aweaoftheworld/Desktop/test
12:25:43: Poedit did not find any files in scanned directories.
12:25:43: Entries in the catalog are probably incorrect.
12:25:43: Updating the catalog failed. Click on 'More>>' for details.

你能帮帮我吗?

此致,

【问题讨论】:

_()gettext() php.net/manual/function.gettext.php 的别名 【参考方案1】:

仅当我使用 _() 代替 _e() 或代替 __() - poedit 可以找到我的字符串 - 但是,在 wordpress 中我收到此错误:

警告:_() 只需要 1 个参数,2 在 C:\xampp\htdocs\xxx.php 的第 xxx 行中给出

这是在我尝试将这个:__()和这个:_e()添加到“关键字”之后,但它并没有解决问题...... 所以对我来说,解决方案是将其更改为 _() 以进行 po 编辑,然后从代码(wp 主题或插件)中获取所有单词后,我将其全部更改为 __()。

【讨论】:

这太傻了。请参阅上面的答案,了解您做错了什么——您需要添加此 non-default 关键字。 在第 4 行我写道:这是在我尝试添加这个:__() 和这个:_e() 到“关键字”之后,但它并没有解决问题...... 那么您要么在代码中错误地使用了 _e(),要么实际上没有意外地将其添加到关键字中(可能拼写错误),或者没有刷新目录。但事实是,Poedit 和 xgettext 可以很好地识别非默认 _e 关键字,无论您遇到什么问题,都不是因为 Poedit 无法看到 _e()。【参考方案2】:

确保 POEdit (Catalog &gt; Settings &gt; Paths) 中定义的路径指向包含您的 PHP 文件的文件夹。这应该可以解决 POEdit 找不到文件的问题。

如果did not find any files in scanned directories 被解析,POEdit 可能仍会找到 0 条消息。这是因为默认情况下 POEdit 不支持 _e 作为关键字。要解决此问题,只需将“_e”添加到关键字列表中(在Catalog &gt; Settings &gt; Keywords)。

【讨论】:

我使用 _() 并且路径是正确的,但 POEdit 1.4.6 无法解析任何内容(同样的错误),而手动使用 xgettext 工作正常。就我而言,升级到 1.5.4 解决了这个问题(操作系统:Ubuntu 12.04.4)。【参考方案3】:

您应该使用 _ 而不是 _e,例如

<?php echo _("hi there i am gettext library") ?>

顺便说一下,_e 函数来自 Wordpress 引擎,它的作用相同,但不是 PHP 预定义函数。

【讨论】:

以上是关于使用 Poedit 创建 POT 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 django manage.py makemessages 创建 .pot 文件

如何使用 poedit 从 js 文件生成 po 文件

Odoo国际化翻译方法及示例介绍

打开po文件时poEdit编码错误

wordpress中的WooCommerce购物车结帐页面中的国家列表里面怎么修改

poedit 和 xml 文件