【发布时间】:2012-08-16 16:18:32
【问题描述】:
我有一个运行良好的命令,可以从我的所有 .js 和 .html 文件(它们只是 Underscore 模板)中提取字符串。但是,它似乎不适用于 Translator cmets。
例如,我的一个 .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 ""
但事实并非如此。我在这里做错了什么还是翻译 cmets 只是不能在 Python 模式下工作?
编辑:我已经接受 John Flatness 的回答是正确的,但是 我确实找到了一种解决方法,它使我仍然可以使用 Python 模式并提取翻译器 cmets .它并不完美,因为它实际上在 cmets 中留下了一些语法:
在我的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 ""
如您所见,唯一的问题是:
- 我必须将评论写成 2 行
- 注释终止符
*/留在翻译器cmets中
不过,在大多数情况下,这应该不是什么大问题。
【问题讨论】:
-
您应该将解决方法移到下面的答案,因为我发现它很有用。
-
@Cas 有一个更干净的解决方案,请参阅下面的答案。
标签: javascript python gettext xgettext