1

我需要国际化和翻译 python 应用程序。我期待一些字典集合驻留在其他资源文件中,这些资源文件可以在运行时切换并在 python 代码中顺利使用。

我在 stackoverflow.com 上搜索过类似的工具,但只找到特定于平台的库,例如 pylons、django 等。

有没有通用的现成库?

4

2 回答 2

2

Python 的标准gettext模块提供了这一点。在此处查看 Python 文档。

gettext 模块为您的 Python 模块和应用程序提供国际化 (I18N) 和本地化 (L10N) 服务。它支持 GNU gettext 消息目录 API 和可能更适合 Python 文件的更高级别、基于类的 API。下面描述的界面允许您用一种自然语言编写模块和应用程序消息,并提供翻译消息目录以在不同的自然语言下运行。

一个简单的例子:

import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
于 2013-01-23T14:04:41.960 回答
0

Babel提供了这样的工具:

一组用于国际化 Python 应用程序的工具

Babel由两个主要部分组成:

  • 用于构建和使用 gettext 消息目录的工具
  • CLDR(通用区域设置数据存储库)的 Python 接口,提供对各种区域设置显示名称、本地化数字和日期格式等的访问。

因此,它可以帮助您翻译字符串并根据当前语言环境提供本地化的浮点数、货币、日期和其他信息:

>>> locale = Locale('es')
>>> month_names = locale.months['format']['wide'].items()
>>> month_names.sort()
>>> for idx, name in month_names:
...     print name
enero
febrero
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre
>>> format_decimal(1.2345, locale='en_US')
u'1.234'
>>> format_decimal(1.2345, locale='sv_SE')
u'1,234'
>>> format_decimal(12345, locale='de_DE')
u'12.345'

它建立在默认库之上gettext进行翻译,为您提供从各种源文件(python、模板等)中提取消息的工具,包括为其他包提供额外提取器的插件系统。

于 2013-01-23T14:03:53.030 回答