使用 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 > Settings > Paths
) 中定义的路径指向包含您的 PHP 文件的文件夹。这应该可以解决 POEdit 找不到文件的问题。
如果did not find any files in scanned directories
被解析,POEdit 可能仍会找到 0 条消息。这是因为默认情况下 POEdit 不支持 _e
作为关键字。要解决此问题,只需将“_e
”添加到关键字列表中(在Catalog > Settings > 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 文件