巴别塔开发

巴别塔作为类库有着悠久的历史,可以追溯到TRAC项目。从那时起,它已经发展成为一个独立开发的项目,实现了CLDR项目的数据访问。

本文档试图尽可能地解释项目的一般规则,以防您想要帮助开发。

跟踪CLDR

一般来说,该项目的目标是尽可能密切地使用CLDR数据。这在过去造成了一些令人沮丧的问题,因为数据完全不在我们的控制之下。为了将挫折感降至最低,我们通常通过以下方式处理CLDR更新:

  • 只有巴别塔的主要版本才能提升CLDR数据。

  • 切勿对CLDR数据执行自定义错误修复。

  • 千万不要绕过巴别塔中的CLDR错误。如果您在数据中发现问题,请向上游报告。

  • 尽快调整数据的解析,否则以后会失控。这尤其需要更大的更新,从而改变多元化和更多。

  • 尽量不要针对可能会更改的特定CLDR数据进行测试。

Python版本

目前应该支持以下Python版本:

  • Python3.8及更高版本

  • PyPy 3.8及更高版本

统一码

Unicode在巴别塔是一件大事。以下是规则的设置方式:

  • 在内部,一切都是Unicode,这是有意义的作为Unicode。

  • 在边界显式编码/解码。永远不要以无法重写的方式假定编码。通常应将UTF-8视为默认编码。

日期和时区

Babel的时区支持依赖于 pytzzoneinfo ;如果 pytz 已安装,则它比 zoneinfo 。Babel应该假设任何时区对象都可以来自这两个模块中的任何一个。

要做的假设:

  • 在可能的情况下使用UTC。

  • 对当地时间要格外小心。在不知道确切时区的情况下不要使用当地时间。

  • time 没有日期是一个非常无用的构造。不要试图支持它的时区。如果这样做,则假定假定当前本地日期而不是UTC日期。