使用 Babel CLI 提取器提取 Javascript 获取文本消息
Extracting Javascript gettext messages using Babel CLI extractor
这里说明 Babel 可以为 Python 和 Javascript 文件提取 gettext 消息。
Babel 带有一些内置的提取器:python(提取 来自 Python 源文件的消息)、javascript 和 ignore (其中 不提取任何内容)。
此处记录了命令行提取器 - 但没有使用示例。
同样在上面的同一指针中,提到了一个用于提取的配置文件,但没有太多扩展。
当我在带有 js 文件的目录上运行提取器的基本命令时,我只得到 .生成了 PO 标头,但没有消息。
$ pybabel extract /path/to/js-dir
# Translations template for PROJECT.
# Copyright (C) 2012 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION'n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS'n"
"POT-Creation-Date: 2012-04-22 19:39+1000'n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE'n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>'n"
"Language-Team: LANGUAGE <LL@li.org>'n"
"MIME-Version: 1.0'n"
"Content-Type: text/plain; charset=utf-8'n"
"Content-Transfer-Encoding: 8bit'n"
"Generated-By: Babel 0.9.6'n"
$
这是我尝试提取消息的 js 文件中的示例片段:
else if(data.status == "1"){
var follow_html = gettext('Follow');
object.attr("class", 'button follow');
object.html(follow_html);
var fav = getFavoriteNumber();
fav.removeClass("my-favorite-number");
if(data.count === 0){
data.count = '';
fav.text('');
}else{
var fmts = ngettext('%s follower', '%s followers', data.count);
fav.text(interpolate(fmts, [data.count]));
}
}
如果有人可以提供确切的 CLI 选项和配置设置以使提取工作,或者指向此类的指针,我将不胜感激。
创建一个包含以下内容的文件 ( babel.cfg
):
[javascript:*.js]
encoding = utf-8
然后,执行:
pybabel extract -F babel.cfg /path/to/js-dir
这应该足以让您拥有一些消息字符串。
顺便说一句,您可以通过执行以下操作来查阅extract
命令的帮助:
pybabel extract --help
我遇到了类似的问题,并且能够通过使用 babel 禁用默认关键字来解决它。
pybabel extract -k __ -F babel.cfg --no-default-keywords /path/to/js-dir
禁用默认值时,必须在命令中至少指定一个关键字 (-k [关键字])。我之所以选择-k __
是因为"__"是我一直在寻找的模式。
只需使用此命令并将 -k 后面的"__"替换为 babel.cfg 文件中的命令。
编辑:这允许您使用自己的关键字而不是gettext()
您可以在 as flask 全局中创建一个对象并使用 gettext 进行翻译
g.i18n = {
'Casa' : lazy_gettext('Home'),
'Auto' : lazy_gettext('Car'),
'Persona' : lazy_gettext('Person')
}
然后将其添加为变量
<script>
var i18n = {{ g.i18n | tojson }}
</script>
并在 JS 中使用它:
var labelTranslate = {
Casa: i18n.Casa,
Persona: i18n.Persona,
Auto: i18n.Auto
};
实际上可以直接在 Javascript 中使用gettext
。
参见:jsgettext。它允许您使用标准的 *gettext 函数,包括使用上下文和/或复数形式的函数。
它可以读取 PO/MO 文件,或者您可以导入定制的 JSON 文件。
有关完整示例,请参阅此项目的此文件。
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 使用从forEach循环中提取的国家代码从数组中获取国家名称
- 是从画布获取图像数据的任何方法,从远程视频中提取
- 主干.js更改模型的 url 参数,提取不会更新获取的数据
- 在主干提取完成后获取响应标头
- 更改 TD 属性并保留从站点提取的数据中获取值
- 如何提取类文件以获取该类文件中的类
- 主干视图在模型完成提取后获取模型变量
- 从 jQuery $.parseXML 中提取 text() 时获取和使用标签的名称
- 获取字符串、提取 ID 和自动换行
- Javascript - 从数组中提取随机字符串并获取未定义
- 使用 Babel CLI 提取器提取 Javascript 获取文本消息
- 如何使用 jQuery 从使用 Ajax 获取的内容中提取 HTML
- 如何通过NRQL查询使用JavaScriptAjax调用在客户端获取/提取NewRelicInsights数据
- 如何从QlikSense的表或对象中提取(获取)数据
- 无法获取主干模型提取的结果
- 如何在dom-node上获取和提取匹配的css规则
- 使用jQuery获取url并提取url段
- 提取“wrapped"在javascript中使用正则表达式从字符串中获取值