概述¶
Babel 为国际化(I18n)和本地化(L10N)提供的功能可以分为两个不同的方面:
构建和使用
gettext
信息目录的工具,以及CLDR(通用语言数据仓库)的 Python 接口,提供对各种语言显示名称、本地化数字和日期格式等的访问。
消息目录¶
虽然 Python 标准库包括一个 gettext
模块,使应用程序能够使用消息目录,但它要求开发者使用 GNU 工具,如 xgettext
、msgmerge
和 msgfmt
建立这些目录。虽然 xgettext
确实支持从 Python 文件中提取消息,但它不知道如何处理 Python 网络应用中常见的其他类型的文件,如模板,也没有提供一个简单的扩展机制来增加这种支持。
Babel 通过提供一个框架来解决这个问题,在这个框架中,各种提取方法可以被插入到一个更大的消息提取框架中,同时也消除了对 GNU gettext
工具的依赖,因为这些工具不一定在所有平台上都可用。关于 Babel 这方面的细节,请看 Working with Message Catalogs。
本地数据¶
此外,虽然 Python 标准库确实包括了对数字和日期格式化的基本本地化支持(locale
模块,以及其他),这种支持是基于每个进程只使用一个特定的 locale 的假设(至少是同时)。而且,它没有提供对其他种类的 locale 数据的访问,例如国家、语言或时区的本地化名称,这些在基于网络的应用程序中经常需要。
对于这些要求,Babel 包括从 通用地域数据存储库(CLDR) 中提取的数据,并提供了一些方便的方法来访问和使用这些数据。参见 Locale Data、Date and Time 和 Number Formatting 以了解更多关于 Babel 这方面的信息。