使用JavaScript中的xgettext提取翻译注释(在Python模式下)

rag*_*lka 6 javascript python gettext xgettext

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

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

/// TRANSLATORS: The word "manual" stands for manual process
gettext("manual");
Run Code Online (Sandbox Code Playgroud)

使用以下命令:

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=/ 
Run Code Online (Sandbox Code Playgroud)

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

#. TRANSLATORS: The word "manual" stands for manual process
#: tax.js:200 
msgid "manual"     msgstr "" 
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。我在这里做错了吗,还是翻译注释在Python模式下不起作用?

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

在我的tax.js档案中:

/*
# This is a translator comment */
gettext("What is this?");
Run Code Online (Sandbox Code Playgroud)

运行以下命令:

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

.po文件中的结果:

#. This is a translator comment */
#: tax.js:201
msgid "What is this?"
msgstr ""
Run Code Online (Sandbox Code Playgroud)

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

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

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

Joh*_*ess 5

问题是您实际上是在说xgettextJavaScript是源代码。

在许多情况下,这可能会使它“足够好”地工作,但是我认为,在这里绊倒的是Python不会//使用进行一线注释#

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