2012-10-23 8 views
5

Esistono metodi per recuperare i nomi del fuso orario in un'altra lingua?Nome fuso orario nella lingua locale

In Python, se faccio qualcosa di simile:

for tz in pytz.common_timezones_set : 
print tz 

Il risultato è in inglese, ma se mi piacerebbe averlo in spagnolo o arabo?

risposta

1

No, sfortunatamente non ci sono traduzioni per i nomi del fuso orario. I nomi fanno parte dello Olson timezone database (non parte di Python o pytz). Ne vengono aggiunti di volta in volta nuovi, quindi qualsiasi potenziale progetto di traduzione dovrebbe rimanere sincronizzato con quel database.

+0

Non è la risposta che volevo, ma grazie per spiegare. – Trollbane

0

pytz.common_timezones_set restituisce un set di fuso orario ID nel database tz. Sono progettati per essere leggibili dall'uomo ma non sono traducibili.

PyICU fornisce l'accesso ai nomi di fuso orario localizzati:

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

Venendo piuttosto tardi, ma mi sono imbattuto in un problema simile di recente, e ha finito per creare il mio pacchetto l18n a tale scopo. È disponibile qui: https://pypi.python.org/pypi/l18n

Fornisce file di traduzione per luoghi leggibili dall'uomo e fusi orari utilizzati in pytz. La maggior parte delle traduzioni viene recuperata automaticamente dal database CLDR, ma ce ne sono sempre alcune mancanti. Per il momento sono disponibili solo file di traduzione per inglese e francese. Sentiti libero di contattarmi (crea un problema sul repository dei pacchetti https://bitbucket.org/tkhyn/l18n) o segui la procedura passo-passo here se vuoi aggiungere traduzioni per la tua lingua.

+0

Grazie per aver messo insieme questo! Ma un suggerimento: "Mi sembra che potrebbe essere una 'i' maiuscola (e se si strizza l'occhio, un 'i' minuscolo), quindi l18n può essere facilmente confuso con i18n. Era un nome creativo, ma forse meno probabilità di cogliere in questo modo? Inoltre, è bello tradurre i nomi dei luoghi, ma un altro utile elemento potrebbe essere quello di fornire i nomi effettivi del fuso orario (ad esempio, che sembra piuttosto complicato, sfortunatamente). –

+0

@NealGokli è possibile ottenere il nome del fuso orario effettivo con 'l18n.tz_fullnames', no? – ouk

2

È possibile utilizzare 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'))