我有一个非常有效的命令,可以从我所有的 .js 和 .html 文件(它们只是 Underscore 模板)中提取字符串。但是,它似乎不适用于翻译评论。
例如,我的一个 .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 ""
如您所见,唯一的问题是:
- 我必须把评论写成两行
- 注释终止符
*/
留在译者注释中
不过,在大多数情况下,这应该不是什么大问题。
最佳答案
问题是你告诉 xgettext
源是 Python,而实际上它是 JavaScript。
这可能使它在许多情况下“足够好”地工作,但我认为这里的问题是 Python 不会使用 //
进行单行注释,它使用#
。
有一个 project on Github为 gettext 工具添加 javascript 支持。我不确定它的当前状态,你必须从源代码构建才能使用它。否则,我想您可以尝试 xgettext
确实支持的其他语言,这些语言具有更多类似 C/C++/Java 的语法。
关于javascript - 从 JavaScript 中使用 xgettext 提取译者评论(在 Python 模式下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052844/