6

我有一个运行良好的命令,可以从我的所有 .js 和 .html 文件(只是下划线模板)中提取字符串。但是,它似乎不适用于翻译评论。

例如,我的 .js 文件之一中有这个:

/// TRANSLATORS: The word "manual" stands for manual process
gettext("manual");

使用以下命令:

find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 --add-comments=/ 

xgettext 应该从 .js 文件中提取注释并将其放入我的 .po 文件中,如下所示:

#. TRANSLATORS: The word "manual" stands for manual process
#: tax.js:200 
msgid "manual"     msgstr "" 

但事实并非如此。我在这里做错了什么还是翻译评论只是不能在 Python 模式下工作?

编辑:我已经接受 John Flatness 的回答是正确的,但是我确实找到了一种解决方法,使我仍然可以使用 Python 模式并提取翻译注释。它并不完美,因为它实际上在注释中留下了一些语法:

在我的tax.js文件中:

/*
# This is a translator comment */
gettext("What is this?");

运行此命令:

find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 -c

结果在 .po 文件中:

#. This is a translator comment */
#: tax.js:201
msgid "What is this?"
msgstr ""

如您所见,唯一的问题是:

  1. 我必须用两行写评论
  2. 注释终止符*/留在翻译注释中

不过,在大多数情况下,这应该不是什么大问题。

4

2 回答 2

5

问题是你说xgettext源是 Python,而实际上它是 JavaScript。

这可能使它在许多情况下“足够好”,但我认为这里的绊脚石是 Python 不使用 . 进行单行注释//,它使用#.

Github 上有一个项目,它为 gettext 工具添加了 javascript 支持。我不确定它的当前状态,你必须从源代码构建才能使用它。否则,我想您可以尝试其他xgettext支持具有更多类似 C/C++/Java 语法的语言。

于 2012-08-21T19:23:11.827 回答
4

获得“翻译注释”而没有任何污染的方法是#在 javascript 注释 start 之后添加一个哈希//,这样 xgettext 会将它之后的所有内容解释为普通的 Python 注释。

尝试这个:

//# This is a translation comment
console.log(_('Some String'));

并使用 xtext 提取,例如:

xgettext --language=Python --from-code=utf-8 --force-po -c -o file.po file.js

这将按如下方式创建 PO:

#. This is a translation comment
#: /path/to/file.js:2
msgid "Some String"
msgstr ""

我在 Ubuntu 12.04.4 上使用 gettext 0.18.1.1-5ubuntu3 成功地做到了这一点

于 2015-05-28T19:21:17.713 回答