valós cimke alapú gettext

Egy ideje már gondolkodom, hogyan lehetne 0 erőforrástöbblettel megoldani azt, hogy ténylegesen címkék kerüljenek a msgid-k helyére. Erre egyébként azért van szükség, hogy feloldható legyen a szavak más kontextusban való másként fordítása, pl: Search Keresés Kereső (amire a domain tökéletes lenne, csak hát ahhoz többet kéne programozni…).
Ha a problémát onnan közelítjük meg, hogy a gettext-be kéne beépíteni egy nyelvi fallback mechanizmust akkor szerintem soha nem lenne meg, viszont ha a po fájlok generálásakor és a sablongeneráláskor változtatunk az eddig bevett szokáson akkor talán szélesebb körben is nagyobb elfogadásra találna a megoldás. (működő kódok, minták és promó tömkelegével)
Az ötlet a következő:

  • msgidben csak A-Z\_\- karakterek szerepelhetnének
  • a programban meg kéne adni az initltools számára egy fallback nyelvet (pl en_US). Esetleg a fejlécben egy plusz mező.
  • sablon generálásakor létrejön az üres fájl amit a fejlesztő feltölt a felületen megjelenő nyelvi szövegekkel
  • Új nyelv hozzáadásakor a fallback nyelv msgid-k alapján a fallback nyelvből feltölti az új nyelv msgstr-jeit, hogy a felületen a fordítatlan szövegek helyén angol szöveg jelenjen meg.

Ehhez a megoldáshoz még a felületet fordító programokat se kéne módosítani. (persze pár funkciót be kéne építeni)
Megoldatlan probléma a fallback nyelvben a msgstr módosításakor hogyan vezetjük át a többi nyelvbe, hogy módosult a szöveg (msgid elévülés). Esetleg a megjegyzésben el lehetne helyezni egy időbélyeget, melyeket összevetve lehetne kilistázni azokat amik módosultak.

Működő kódok, shell scriptek hamarosan…