2012-10-23 14 views
5

Czy istnieją metody pobierania nazw stref czasowych w innym języku?Nazwy stref czasowych w języku lokalnym

W Pythonie, jeśli zrobię coś takiego:

for tz in pytz.common_timezones_set : 
print tz 

Rezultatem jest w języku angielskim, ale co jeśli chciałby mieć go w języku hiszpańskim lub arabski?

Odpowiedz

1

Nie, niestety nie ma tłumaczeń dla nazw stref czasowych. Nazwy są częścią Olson timezone database (nie jest częścią Python ani pytz). Nowe są dodawane od czasu do czasu, więc każdy potencjalny projekt tłumaczeniowy musiałby pozostać zsynchronizowany z tą bazą danych.

+0

nie jest odpowiedzią chciałem, ale dzięki za wyjaśnienie. – Trollbane

0

pytz.common_timezones_set zwraca zestaw strefy czasowej ids w bazie danych tz. Są zaprojektowane tak, aby były czytelne dla człowieka, ale nie można ich tłumaczyć.

PyICU zapewnia dostęp do zlokalizowanych nazw Strefa czasowa:

>>> 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' 
0

Coming dość późno, ale wpadłem na podobnym problemie ostatnio, a zakończył się tworząc własną paczkę l18n do tego celu. Jest dostępny pod adresem: https://pypi.python.org/pypi/l18n

Zapewnia pliki tłumaczeń miejsc i stref czasowych używanych w pytlu. Większość tłumaczeń jest automatycznie pobierana z bazy danych CLDR, ale zawsze jest ich kilka. W chwili obecnej dostępne są tylko pliki tłumaczeniowe dla języka angielskiego i francuskiego. Zapraszam do kontaktu ze mną (utwórz problem na repozytorium pakietów https://bitbucket.org/tkhyn/l18n) lub wykonaj procedurę krok po kroku here, jeśli chcesz dodać tłumaczenia dla swojego języka.

+0

Dzięki za złożenie tego razem! Ale sugestia: "l" wygląda na to, że może to być kapitał "i" (i jeśli mrużysz, małe litery "i"), więc l18n można łatwo pomylić z i18n. To było twórcze imię, ale być może mniej prawdopodobne, aby złapać w ten sposób? Ponadto dobrze jest tłumaczyć nazwy miejsc, ale innym przydatnym elementem byłoby podanie rzeczywistych nazw stref czasowych (np. Które wydaje się dość skomplikowane, niestety). –

+0

@NealGokli możesz uzyskać aktualną nazwę strefy czasowej z 'l18n.tz_fullnames', prawda? – ouk

2

Można użyć 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'))