dict(win32timezone.TimeZoneInfo._get_indexed_time_zone_keys())
возвращает именно то отображение, которое мне нужно, от имени текущей локали до имени на английском. Следующий код решает это:
import win32timezone
win32tz_name = win32timezone.TimeZoneInfo.local().timeZoneName
win32timezone_to_en = dict(win32timezone.TimeZoneInfo._get_indexed_time_zone_keys())
win32timezone_name_en = win32timezone_to_en.get(win32tz_name, win32tz_name)
olsen_name = win32timezones.get(win32timezone_name_en, None)
if not olsen_name:
raise ValueError(u"Could not map win32 timezone name %s (English %s) to Olsen timezone name" % (win32tz_name, win32timezone_name_en))
return pytz.timezone(olsen_name)
Было бы неплохо, если бы это было доступно в объекте win32timezone.TimeZoneInfo
, вместо того, чтобы вызывать закрытый метод.