巴别塔开发¶
巴别塔作为类库有着悠久的历史,可以追溯到TRAC项目。从那时起,它已经发展成为一个独立开发的项目,实现了CLDR项目的数据访问。
本文档试图尽可能地解释项目的一般规则,以防您想要帮助开发。
跟踪CLDR¶
一般来说,该项目的目标是尽可能密切地使用CLDR数据。这在过去造成了一些令人沮丧的问题,因为数据完全不在我们的控制之下。为了将挫折感降至最低,我们通常通过以下方式处理CLDR更新:
只有巴别塔的主要版本才能提升CLDR数据。
切勿对CLDR数据执行自定义错误修复。
千万不要绕过巴别塔中的CLDR错误。如果您在数据中发现问题,请向上游报告。
尽快调整数据的解析,否则以后会失控。这尤其需要更大的更新,从而改变多元化和更多。
尽量不要针对可能会更改的特定CLDR数据进行测试。
Python版本¶
目前应该支持以下Python版本:
Python3.8及更高版本
PyPy 3.8及更高版本
统一码¶
Unicode在巴别塔是一件大事。以下是规则的设置方式:
在内部,一切都是Unicode,这是有意义的作为Unicode。
在边界显式编码/解码。永远不要以无法重写的方式假定编码。通常应将UTF-8视为默认编码。
日期和时区¶
Babel的时区支持依赖于 pytz
或 zoneinfo
;如果 pytz
已安装,则它比 zoneinfo
。Babel应该假设任何时区对象都可以来自这两个模块中的任何一个。
要做的假设:
在可能的情况下使用UTC。
对当地时间要格外小心。在不知道确切时区的情况下不要使用当地时间。
time 没有日期是一个非常无用的构造。不要试图支持它的时区。如果这样做,则假定假定当前本地日期而不是UTC日期。