javascript - 从 JavaScript 中使用 xgettext 提取译者评论(在 Python 模式下)

标签 javascript python gettext xgettext

我有一个非常有效的命令,可以从我所有的 .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 ""

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

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

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

最佳答案

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

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

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

关于javascript - 从 JavaScript 中使用 xgettext 提取译者评论(在 Python 模式下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052844/

相关文章:

python - 无法使用 gettext 将已翻译的字符串附加到自己身上

django - gettext 翻译不适用于生产系统

javascript - 为什么 NodeJS shell 和编译器在变量赋值方面存在分歧?

python - 将字符串日期转换为时间戳并返回 python

javascript - 从 html 页面动态删除脚本文件

python - pydub-内存错误

python - 需要澄清 - 使用列表的 Python For 循环

php - xgettext 不会扫描复数形式

javascript - 通过 CDN 加载文件 vs 将所有 CSS/JS 压缩到一个文件

javascript - 引用错误 : Can't find variable: Map