我需要国际化和翻译python应用程序。我期待一些字典集合驻留在可以切换运行时并在python代码中顺利使用的其他资源文件中。
我在stackoverflow.com上搜索了类似的工具,但只找到了特定于平台的库,例如用于挂架,用于django等。
是否有任何一般的现成可用库?
答案 0 :(得分:2)
Python的标准gettext
模块提供了这个功能。请参阅Python文档here。
gettext模块提供国际化(I18N)和 Python模块和应用程序的本地化(L10N)服务。 它支持GNU gettext消息目录API和更高版本 基于类的级别API,可能更适合Python文件。 下面介绍的界面允许您编写模块和 应用程序消息采用一种自然语言,并提供目录 翻译的消息,以不同的自然语言运行。
一个简单的例子:
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
答案 1 :(得分: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,模板等)中提取消息的工具,包括用于提供其他包的插件系统额外的提取器。