rag*_*lka 13 html python gettext babel
我知道至少有两种方法可以从.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
Run Code Online (Sandbox Code Playgroud)
这将在关键字中包含pgettext和npgettext
更新2:我发现要提取HTML标记属性中的gettext消息,我必须在JS部分之间插入换行符.例如,我必须将此转换为:
<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>
Run Code Online (Sandbox Code Playgroud)
进入:
<a href="" title="
<%= ST.i18n.gettext('Click to add another row') %>"></a>
Run Code Online (Sandbox Code Playgroud)
Python模式下的xgettext如果位于同一行,则不会提取gettext消息.这是一个似乎对我有用的快速黑客攻击.
更新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
Run Code Online (Sandbox Code Playgroud)
这样,我可以在模板文件中保持正常的格式:
<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>
Run Code Online (Sandbox Code Playgroud)
Babel 的消息提取是可扩展的,您需要为新类型创建专用的提取器。
您没有指定您(或您的朋友)发现了什么“严重问题”,因此很难在这里更详细地帮助您,但特定格式的任何问题都归结为错误的提取代码。
Babel 支持使用 加载鸡蛋提取器entry_points,因此PyPI 上列出了大量此类提取器(链接搜索列出了与 Babel 相关的任何内容,但其中大量是提取器;Babel 提取器没有 Trove 分类器)然而)。您可以使用额外的 PyPI 搜索特定模板系统来查看是否有适用于这些模板系统的 Babel 提取器。
| 归档时间: |
|
| 查看次数: |
4922 次 |
| 最近记录: |