[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