用于内化和翻译的通用python库

时间:2013-01-23 14:02:20

标签: python internationalization

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

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

是否有任何一般的现成可用库?

2 个答案:

答案 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,模板等)中提取消息的工具,包括用于提供其他包的插件系统额外的提取器。