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

Posted

技术标签:

【中文标题】如何使用 poedit 从 js 文件生成 po 文件【英文标题】:how to generate po file from js file using poedit 【发布时间】:2013-05-09 13:39:36 【问题描述】:

我正在使用 Gettext.js 库来本地化我从 JS 文件生成的内容。现在的情况是,我必须手动创建和编写每个 po 文件。我知道我们可以使用 PoEdit 扫描 php 文件以获取 gettext 字符串。那么,是否可以使用 PoEdit 扫描 JS 文件中的 gettext 字符串?

【问题讨论】:

【参考方案1】:

通过在 PoEdit 中创建一个新的 Python 语言解析器来实现这一点。

文件 > 首选项 > 解析器 > 新建

语言:

JS

扩展列表:

*.js

解析器命令:

xgettext --language=Python --force-po -o %o %C %K %F

关键字列表中的项目:

-k%k

输入文件列表中的项目:

%f

源代码字符集:

--from-code=%c

我在搜索这个时发现了这个教程,这帮助我达到了Tutorial Here>>的情况

实际上教程是法语的,链接是谷歌翻译的(英语)。

【讨论】:

当我将 --language=Python 更改为 --language=C 时,这对我有用【参考方案2】:

xgettext 0.18.3版本开始,可以使用javascript as the language parameter。

至少从 1.6.2 版本开始,Poedit 就使用了这个版本的 xgettext。

【讨论】:

【参考方案3】:

xgettext命令行程序用于扫描源码,可以解析以下语言:

C、C++、ObjectiveC、Shell、Python、Lisp、EmacsLisp、librep、Scheme、Java、C#、awk、Tcl、Perl、PHP、GCC 源代码、Glade

虽然 JavaScript 没有被列为一门语言,但我只是尝试了一些,Perl 确实有效。试试这个:

echo " testFunc('foo');" > test.js;
xgettext --keyword=testFunc --output=- test.js --language="perl";

要从 POEdit 执行此操作,请打开 Preferences > Parsers > Perl;*.js 添加到文件扩展名列表并在解析器命令字段中的 xgettext 之后添加 --language=Perl。这对我有用,我可以通过这种方式从 JS 文件中获取新字符串。

虽然我不知道 gettext.js 是如何工作的,但更好的方法可能是convert PO files to a native JavaScript file format。

【讨论】:

【参考方案4】:

xgettext 现在原生支持 JavaScript,所以命令很简单:

xgettext --output=output.pot --language=JavaScript *.js

【讨论】:

以上是关于如何使用 poedit 从 js 文件生成 po 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PoEditor 添加翻译

poedit 显示似乎无法修复的错误

如何找到 POEdit 错误

是否可以从翻译中创建新的 .po 文件?

使用 Poedit 在哪里确定“源文本”

获取 PO 文件中的字数