时区名称以当地语言显示

时间:2012-10-23 14:43:05

标签: python localization internationalization timezone pytz

是否有一种方法可以用另一种语言检索时区名称?

在Python中,如果我这样做:

for tz in pytz.common_timezones_set :
 print tz

结果是英文的,但是如果我想用西班牙语或阿拉伯语的话呢?

4 个答案:

答案 0 :(得分:3)

您可以使用babel package

import pytz
from babel.dates import get_timezone_location

for tz in pytz.common_timezones_set:
    print(get_timezone_location(tz, locale='es'))

答案 1 :(得分:1)

不,遗憾的是,时区名称没有翻译。这些名称是Olson timezone database的一部分(不属于Python或pytz)。新的是不时添加的,因此任何潜在的翻译项目都必须与该数据库保持同步。

答案 2 :(得分:0)

pytz.common_timezones_set会在tz数据库中返回一组时区 ids 。它们被设计为人类可读,但它们不可翻译。

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'

答案 3 :(得分:0)

来得太晚了但我最近遇到了类似的问题,最后为此目的创建了自己的包l18n。它可以在这里找到:https://pypi.python.org/pypi/l18n

它为pytz中使用的人类可读地点和时区提供翻译文件。大多数翻译都是从CLDR数据库中自动获取的,但总会丢失一些翻译。目前只提供英语和法语的翻译文件。如果您想为您的语言添加翻译,请随时与我联系(在软件包的回购https://bitbucket.org/tkhyn/l18n上创建问题)或按照分步过程here进行操作。