概述

Babel 为国际化(I18n)和本地化(L10N)提供的功能可以分为两个不同的方面:

  • 构建和使用 gettext 信息目录的工具,以及

  • CLDR(通用语言数据仓库)的 Python 接口,提供对各种语言显示名称、本地化数字和日期格式等的访问。

消息目录

虽然 Python 标准库包括一个 gettext 模块,使应用程序能够使用消息目录,但它要求开发者使用 GNU 工具,如 xgettextmsgmergemsgfmt 建立这些目录。虽然 xgettext 确实支持从 Python 文件中提取消息,但它不知道如何处理 Python 网络应用中常见的其他类型的文件,如模板,也没有提供一个简单的扩展机制来增加这种支持。

Babel 通过提供一个框架来解决这个问题,在这个框架中,各种提取方法可以被插入到一个更大的消息提取框架中,同时也消除了对 GNU gettext 工具的依赖,因为这些工具不一定在所有平台上都可用。关于 Babel 这方面的细节,请看 Working with Message Catalogs

本地数据

此外,虽然 Python 标准库确实包括了对数字和日期格式化的基本本地化支持(locale 模块,以及其他),这种支持是基于每个进程只使用一个特定的 locale 的假设(至少是同时)。而且,它没有提供对其他种类的 locale 数据的访问,例如国家、语言或时区的本地化名称,这些在基于网络的应用程序中经常需要。

对于这些要求,Babel 包括从 通用地域数据存储库(CLDR) 中提取的数据,并提供了一些方便的方法来访问和使用这些数据。参见 Locale DataDate and TimeNumber Formatting 以了解更多关于 Babel 这方面的信息。