使用Babel CLI提取器提取Javascript gettext消息

Bas*_*ani 6 javascript python localization gettext babel

据说这里是巴贝尔可以提取gettext的消息Python和JavaScript文件.

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"

$ 
Run Code Online (Sandbox Code Playgroud)

以下是来自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]));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供精确的CLI选项和配置设置以使提取工作,或者指向这样的指针,我将不胜感激.

ubi*_*bik 6

babel.cfg使用以下内容创建文件():

[javascript:*.js]
encoding = utf-8
Run Code Online (Sandbox Code Playgroud)

然后做:

pybabel extract -F babel.cfg /path/to/js-dir
Run Code Online (Sandbox Code Playgroud)

这应该足以让你有一些消息字符串.

顺便说一下,您可以通过以下方式查询extract命令的帮助:

pybabel extract --help
Run Code Online (Sandbox Code Playgroud)