Többnyelvűsítési (i18n) fejlemények Django 1.3-ban

Az áprilisi budapesti Python meetupon Farkas Szilveszter demonstrálta a Django 1.3-as verziójának újdonságait. A nagyobb volumenű újításokon túl (osztály alapú generikus nézetek, naplózás integráció, gyorstárazás fejlesztések) néhány kis, ám igen hasznos folt is bedolgozásra került.

Ezek közül emelném ki, hogy immáron a fordítói kifejezések kontektusba (message context) helyezhetők; ezzel megoldható az a probléma, amikor az alap nyelvű kifejezés többszöri előfordulását a célnyelven más-más fordításokkal jelölnénk. Angol-magyar relációban tipikusan ilyen helyzetek lehetnek az angolul főnévként és igeként is helytálló kifejezések, amelyeket magyarul eltérően fordítunk.

# A pgettext() függvénynek megadható kontextus.
from django.utils.translation import pgettext
pgettext('Log in', 'button')
pgettext('Log in', 'heading')
# A fordítások kigyűjtését követően kontextusonként
# egy bejegyzés kerül a katalógusba
msgctxt "button"
msgid "Log in"
msgstr "Bejelentkezés"

msgctxt "heading"
msgid "Log in"
msgstr "Jelentkezzen be"

(Némileg sánta a példám, gomennasai.)

A dolog szépség hiába egyelőre, hogy míg kódból megadható fordítói környezet, addig a Django sablonnyelvét még nem készítették erre fel. A dokumentáció nem említi, és sem a trans-t, sem a blocktrans sablontaget nem sikerült rávennem erre a működésre.

További problémát okozhat, ha az idők szavára hallgatva a buta makemessage-t már régen lecseréltük a Babelre. Noha a Babel kezeli a kontextusokat, egyelőre nem képes a sablon fordítási katalógus (POT) előállításakor azokat kiolvasni a projektünk forráskódjából. Hasonlóképpen Babellel akadályoztatott az 1.3-mal érkező fordítói megjegyzések (tanslator comments) bevezetése is. Míg a Babel kigyűjtő (extractor) mechanizmusa jóideje értelmezi a fordításokat megelőző # NOTE: stringgel felvezetett megjegyzéseket, addig a Djangoba újonnan bekerült módi szerint a makemessages a # Translators: kezdetű sorokat keresi, és per pillanat nem találtam még eszközt arra, hogy a Babelt erre az eltérő helyörzőre megtanítsuk.

27máj.

2 Comment for Többnyelvűsítési (i18n) fejlemények Django 1.3-ban

  1. developer says:
    "A dolog szépség hiába egyelőre, hogy míg kódból megadható fordítói környezet, addig a Django sablonnyelvét még nem készítették erre fel."

    Я не знаю, что это...

  2. Laci says:

    Szia!

    Köszönöm a postot!

    Arra is született esetleg megoldás, hogy a timesince ne azt írja ki, hogy "33 perc", hanem ahogy angolul is "33 perce".

    Üdv! Laci

Szólj hozzá