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

2024-06-01 22:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

有没有办法从HTML文件中提取gettext字符串-或者更精确地说-Javascript模板(下划线、胡子等等…)。据我所知,巴贝尔和盖特都没有。

我的一个朋友试着让巴贝尔去做,但是它有一些严重的问题,比如缺少一些翻译等等。。。

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

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>

如果gettext消息位于同一行,则Python模式下的xgettext将不会提取该消息。这是一个快速的黑客,似乎对我有用。

更新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>

Tags: 文件字符串模板消息titlehtml模式keyword