区域设置数据¶
同时 message catalogs 允许您本地化应用程序中的任何消息,但有许多在许多应用程序中使用的字符串,它们的翻译很容易获得。
例如,假设您有一个可供用户选择的国家/地区列表,并且您希望以用户喜欢的语言显示这些国家/地区的名称。您可以利用Babel附带的区域设置数据提供的翻译,而不是在应用程序中自己翻译所有这些国家/地区的名称,这些数据基于 Common Locale Data Repository (CLDR) 由 Unicode Consortium .
这个 Locale
等级¶
通常情况下,您可以通过以下方式访问此类区域设置数据 Locale
由Babel提供的类:
>>> from babel import Locale
>>> locale = Locale('en', 'US')
>>> locale.territories['US']
u'United States'
>>> locale = Locale('es', 'MX')
>>> locale.territories['US']
u'Estados Unidos'
除了国家/地区名称外,区域设置数据还提供对语言、脚本、变体、时区等名称的访问。有些数据与数字和日期格式密切相关。
大多数相应的 Locale
属性返回字典,其中键是代码,如ISO国家/地区和语言代码。有关相关规范的参考,请参阅API文档。
区域设置显示名称¶
区域设置本身可用于描述区域设置本身或其他区域设置。这主要意味着,给定一个语言环境对象,您可以要求它提供其规范的显示名称、语言名称和其他信息。由于区域设置相互交叉引用,因此您可以要求使用CLDR支持的任何语言的区域设置名称:
>>> l = Locale.parse('de_DE')
>>> l.get_display_name('en_US')
u'German (Germany)'
>>> l.get_display_name('fr_FR')
u'allemand (Allemagne)'
显示名称包括唯一标识区域设置(语言、区域、脚本和变体)的所有信息,而该区域设置通常不是您想要的。您还可以要求提供部分信息:
>>> l.get_language_name('de_DE')
u'Deutsch'
>>> l.get_language_name('it_IT')
u'tedesco'
>>> l.get_territory_name('it_IT')
u'Germania'
>>> l.get_territory_name('pt_PT')
u'Alemanha'
日历显示名称¶
这个 Locale
类提供对许多与日历显示相关的区域设置显示名称的访问,例如工作日或月份的名称。
这些显示名称当然用于日期格式化,但也可以用于,例如,以用户首选的语言向用户显示月份列表:
>>> locale = Locale('es')
>>> month_names = locale.months['format']['wide'].items()
>>> for idx, name in sorted(month_names):
... print name
enero
febrero
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre