有没有一种方法可以用另一种语言检索时区名称?
在 Python 中,如果我这样做:
for tz in pytz.common_timezones_set :
print tz
结果是英文的,但如果我想要西班牙文或阿拉伯文怎么办?
有没有一种方法可以用另一种语言检索时区名称?
在 Python 中,如果我这样做:
for tz in pytz.common_timezones_set :
print tz
结果是英文的,但如果我想要西班牙文或阿拉伯文怎么办?
你可以使用babel 包
import pytz
from babel.dates import get_timezone_location
for tz in pytz.common_timezones_set:
print(get_timezone_location(tz, locale='es'))
不,很遗憾,时区名称没有翻译。这些名称是Olson 时区数据库的一部分(不是 Python 或 的一部分pytz
)。不时添加新的,因此任何潜在的翻译项目都必须与该数据库保持同步。
pytz.common_timezones_set
返回 tz 数据库中的一组时区ID。它们被设计成人类可读的,但它们不可翻译。
PyICU提供对本地化时区名称的访问:
>>> from datetime import datetime
>>> import icu
>>> df = icu.DateFormat.createDateTimeInstance(icu.DateFormat.SHORT, icu.DateFormat.FULL, icu.Locale.getFrance())
>>> df.format(datetime.now(icu.ICUtzinfo.getDefault()))
'27/01/2015 21:01:01 heure normale d’Europe centrale'
来得很晚,但我最近遇到了类似的问题,最终l18n
为此目的创建了自己的包。它在这里可用:https ://pypi.python.org/pypi/l18n
它为 pytz 中使用的人类可读地点和时区提供翻译文件。大多数翻译都是从 CLDR 数据库中自动获取的,但总是有一些翻译丢失。目前只有英文和法文的翻译文件可用。如果您想为您的语言添加翻译,请随时与我联系(在包的 repo https://bitbucket.org/tkhyn/l18n上创建问题)或按照此处的分步程序进行操作。