总代理商/安装工具集成

巴别塔提供了集成到 setup.py 脚本,基于 distutils 属于Python标准库或第三方的包 setuptools 包裹。

当正确安装了Babel时,这些命令在默认情况下可用,并且 setup.py 正在使用 setuptools 。对于使用普通旧式的项目 distutils ,需要显式注册命令,例如:

from distutils.core import setup
from babel.messages import frontend as babel

setup(
    ...
    cmdclass = {'compile_catalog': babel.compile_catalog,
                'extract_messages': babel.extract_messages,
                'init_catalog': babel.init_catalog,
                'update_catalog': babel.update_catalog}
)

compile_catalog

这个 compile_catalog 命令类似于GNU msgfmt 工具,因为它从PO文件中获取消息目录,并将其编译成二进制MO文件。

如果命令已正确安装或注册,则项目的 setup.py 脚本应允许您使用命令::

$ ./setup.py compile_catalog --help
Global options:
  --verbose (-v)  run verbosely (default)
  --quiet (-q)    run quietly (turns verbosity off)
  --dry-run (-n)  don't actually do anything
  --help (-h)     show detailed help message

Options for 'compile_catalog' command:
   ...

运行该命令将生成二进制MO文件::

$ ./setup.py compile_catalog --directory foobar/locale --locale pt_BR
running compile_catalog
compiling catalog to foobar/locale/pt_BR/LC_MESSAGES/messages.mo

选项

这个 compile_catalog 命令接受以下选项:

期权

描述

--domain

采购订单文件的域(默认为小写项目名称)

--directory (-d)

基目录的名称

--input-file (-i)

输入文件的名称

--output-file (-o)

输出文件的名称

--locale (-l)

新本地化字符串的区域设置

--use-fuzzy (-f)

也包括“模糊”的翻译

--statistics

打印有关翻译的统计信息

如果 directory 已指定,但 output-file 不是,则输出文件的默认文件名将为::

<directory>/<locale>/LC_MESSAGES/<domain>.mo

如果既不是 input_file 也不 locale 选项时,此命令将在基目录中查找与给定域匹配的所有编录文件,并将每个编录文件编译为同一目录中的MO文件。

这些选项可以在命令行上指定,也可以在 setup.cfg 文件。

extract_messages

这个 extract_messages 命令可与GNU相媲美 xgettext 程序:它可以从各种不同的源文件中提取可本地化的消息,并从收集的消息中生成PO(可移植对象)模板文件。

如果命令已正确安装或注册,则项目的 setup.py 脚本应允许您使用命令::

$ ./setup.py extract_messages --help
Global options:
  --verbose (-v)  run verbosely (default)
  --quiet (-q)    run quietly (turns verbosity off)
  --dry-run (-n)  don't actually do anything
  --help (-h)     show detailed help message

Options for 'extract_messages' command:
   ...

运行该命令将生成PO模板文件::

$ ./setup.py extract_messages --output-file foobar/locale/messages.pot
running extract_messages
extracting messages from foobar/__init__.py
extracting messages from foobar/core.py
...
writing PO template file to foobar/locale/messages.pot

方法映射

属性指向的配置文件可以指定文件模式到提取方法(和选项)的映射 --mapping-file 选项如上所示。或者,您可以直接在中配置映射 setup.py 使用关键字参数将 setup() 功能:

setup(...

    message_extractors = {
        'foobar': [
            ('**.py',                'python', None),
            ('**/templates/**.html', 'genshi', None),
            ('**/templates/**.txt',  'genshi', {
                'template_class': 'genshi.template:TextTemplate'
            })
        ],
    },

    ...
)

选项

这个 extract_messages 命令接受以下选项:

期权

描述

--charset

要在输出文件中使用的字符集

--keywords (-k)

除缺省值之外还要查找的以空格分隔的关键字列表

--no-default-keywords

不包括默认关键字

--mapping-file (-F)

映射配置文件的路径

--no-location

不要在文件名和行号中包含位置注释

--omit-header

请勿在标题中包含msgid“”条目

--output-file (-o)

输出文件的名称

--width (-w)

设置输出线宽(默认值76)

--no-wrap

不要将长于输出行宽度的消息行拆分为几行

--input-dirs

应扫描邮件的目录

--sort-output

生成排序输出(默认值为false)

--sort-by-file

按文件位置对输出进行排序(默认为False)

--msgid-bugs-address

设置邮件错误报告的电子邮件地址

--copyright-holder

在输出中设置版权所有者

--add-comments (-c)

在输出文件中放置带有标签的注释挡路(或前面的关键字行)。用逗号(,)分隔多个标记

这些选项可以在命令行上指定,也可以在 setup.cfg 文件。在后一种情况下,上述选项将成为该部分的条目 [extract_messages] ,并且选项名称将更改为使用下划线字符而不是破折号,例如:

[extract_messages]
keywords = _ gettext ngettext
mapping_file = mapping.cfg
width = 80

这相当于从命令行调用命令,如下所示:

$ setup.py extract_messages -k _ -k gettext -k ngettext -F mapping.cfg -w 80

任何路径名都是相对于 setup.py 文件。对于布尔选项,请使用“true”或“false”值。

init_catalog

这个 init_catalog 命令基本上等同于GNU msginit 程序:它基于PO模板文件(POT)创建新的翻译目录。

如果命令已正确安装或注册,则项目的 setup.py 脚本应允许您使用命令::

$ ./setup.py init_catalog --help
Global options:
  --verbose (-v)  run verbosely (default)
  --quiet (-q)    run quietly (turns verbosity off)
  --dry-run (-n)  don't actually do anything
  --help (-h)     show detailed help message

Options for 'init_catalog' command:
  ...

运行该命令将生成PO文件::

$ ./setup.py init_catalog -l fr -i foobar/locales/messages.pot \
                         -o foobar/locales/fr/messages.po
running init_catalog
creating catalog 'foobar/locales/fr/messages.po' based on 'foobar/locales/messages.pot'

选项

这个 init_catalog 命令接受以下选项:

期权

描述

--domain

采购订单文件的域(默认为小写项目名称)

--input-file (-i)

输入文件的名称

--output-dir (-d)

输出目录的名称

--output-file (-o)

输出文件的名称

--locale

新本地化字符串的区域设置

如果 output-dir 已指定,但 output-file 不是,则输出文件的默认文件名将为::

<output_dir>/<locale>/LC_MESSAGES/<domain>.po

这些选项可以在命令行上指定,也可以在 setup.cfg 文件。

update_catalog

这个 update_catalog 命令基本上等同于GNU msgmerge 程序:它基于PO模板文件(POT)更新现有翻译目录。

如果命令已正确安装或注册,则项目的 setup.py 脚本应允许您使用命令::

$ ./setup.py update_catalog --help
Global options:
  --verbose (-v)  run verbosely (default)
  --quiet (-q)    run quietly (turns verbosity off)
  --dry-run (-n)  don't actually do anything
  --help (-h)     show detailed help message

Options for 'update_catalog' command:
  ...

运行该命令将更新PO文件::

$ ./setup.py update_catalog -l fr -i foobar/locales/messages.pot \
                            -o foobar/locales/fr/messages.po
running update_catalog
updating catalog 'foobar/locales/fr/messages.po' based on 'foobar/locales/messages.pot'

选项

这个 update_catalog 命令接受以下选项:

期权

描述

--domain

采购订单文件的域(默认为小写项目名称)

--input-file (-i)

输入文件的名称

--output-dir (-d)

输出目录的名称

--output-file (-o)

输出文件的名称

--locale

新本地化字符串的区域设置

--ignore-obsolete

不要在输出中包含过时的消息

--no-fuzzy-matching (-N)

不要使用模糊匹配

--previous

保留翻译后消息的以前的msgid

如果 output-dir 已指定,但 output-file 不是,则输出文件的默认文件名将为::

<output_dir>/<locale>/LC_MESSAGES/<domain>.po

如果既不是 input_file 也不 locale 选项时,此命令将在基目录中查找与给定域匹配的所有编录文件,并更新每个编录文件。

这些选项可以在命令行上指定,也可以在 setup.cfg 文件。