繁体   English   中英

从 Javascript 和 HTML 文件(模板)中提取 gettext 字符串

[英]Extracting gettext strings from Javascript and HTML files (templates)

我知道至少有两种方法可以从 .js 文件中提取 gettext 字符串 - 在 python 模式下使用 gettext 解析器(我听说它有一些缺点)和用 python 编写的 Babel。

有没有办法从 HTML 文件中提取 gettext 字符串 - 或者更准确地说 - Javascript 模板(下划线、小胡子等)。 据我所知,Babel 或 gettext 都不会这样做。

我的一个朋友试图用 Babel 来做这件事,但它有一些严重的问题,比如缺少一些翻译等等......

更新:一位朋友对我进行了一些指导,所以现在看来​​我可以按照我想要的方式提取所有字符串。 我唯一缺少的是“翻译评论”。 我使用的命令是这样的:

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

这将在关键字中包含 pgettext 和 npgettext

更新 2:我发现要提取 HTML 标记属性内的 gettext 消息,我必须在 JS 部分之间插入换行符。 例如,我必须转换这个:

<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>

进入这个:

<a href="" title="
<%= ST.i18n.gettext('Click to add another row') %>"></a>

Python 模式下的 xgettext 不会提取 gettext 消息,如果它在同一行上。 不过,这是一个快速的 hack,似乎对我有用。

更新 3:似乎 PHP 模式下的 xgettext 从 HTML 中提取消息没有问题(至少使用 Undsrscore 模板),这也适用于翻译器注释。

find ../app -iname '*.html' | xargs xgettext --language=PHP --from-code=utf-8 -c --keyword=gettext --keyword=ngettext:1,2 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 -o translations.po

这样,我可以在模板文件中保持正常格式:

<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>

Babel 的消息提取是可扩展的,您需要为新类型创建专用的提取器。

您没有具体说明您(或您的朋友)发现了哪些“严重问题”,因此在这里很难为您提供更详细的帮助,但任何特定格式的问题都归结为错误的提取代码。

Babel 支持使用entry_points从鸡蛋中加载提取器,因此PyPI 上列出了大量此类提取器(链接搜索列出了与 Babel 相关的任何内容,但其中大量是提取器;Babel 没有 Trove 分类器提取器)。 您可以对特定模板系统使用额外的 PyPI 搜索,以查看是否有用于这些模板系统的 Babel 提取器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM