[python] Lokalizace
Petr Prikryl
PrikrylP na skil.cz
Středa Leden 31 08:54:30 CET 2007
MaReK Olšavský
> nemate nejaky tip, jak lokalizovat programy
> v Pythonu? [...]
Standardní dokumentace, Library Reference,
21. Internationalization.
Mluví se tam o modulech gettext a locale.
Zatím jsem to nepotřeboval a nevím, jak
jednoduše nebo komplikovaně se s tím dělá.
Asi záleží na tom, jak rozsáhlá ta aplikace
má být a jak moc čistě se to má řešit.
Pokud jsem to pochopil dobře, tak gettext.gettext
vezme jako klíč řetězec v default jazyce a hledá
příslušný překlad ze svých vnitřních struktur.
Jednodušší řešení by mohlo mohlo být založené
na jazykově nezávislých identifikačních řetězcích
jako klíčích:
cs = { 'cancel': u'Přerušit',
'ok': u'Budiž',
...atd...
}
en = { 'cancel': u'Cancel',
'ok': u'OK',
...etc...
}
de = {
...německy neumím...
}
Slovníky by se plnily nějakým vhodným způsobem,
nebo by byly takto přímo definovány v příslušných
modulech.
# Přepnutí jazyka.
lang = cs
# Získání řetězce v jazyce.
s = text("cancel")
kde funce text() by mohla být definována třeba
takto (jen pro představu, špinavě předpokládající
globální lang a en pro jednoduchost):
def text(k):
if k in lang: # aktuální jazyk
return lang[k]
elif k in en: # default jazyk
return en[k]
else
raise LangError(k)
pepr
Další informace o konferenci Python