scripts voor language support in applicaties

...volgens de gettext standaard zoals gebruikt in NoteTree.

Ik pas het eerlijk gezegd niet overal toe, in Rst2Html bijvoorbeeld zit een eigen implementatie van vertalingen omdat dat toch wat eenvoudiger was (of leek). In feite is dit de eerste applicatie waarin ik dit ben gaan gebruiken omdat ik het wou leren kennen en omdat Django het ook gebruikt.

De werkwijze bestaat uit een aantal stappen, en voor elke stap heb ik een functie.

Klaarmaken van de omgeving:

binfab lang.init <project> <lang>

Genereert onder de <project> directory een directory "locale" met daaronder per taal aangegeven door <lang> ('.' is default, doet het voor languages "en" en "nl") een LC_MESSAGES directory.

Verzamelen van de te vertalen teksten (of symbolen):

binfab lang.gettext <project> <source> (waarom niet lang.get?)

Genereert een PO file per <source> in de directory waar van uit het script gestart wordt. Als je voor <source> "." opgeeft wordt alles van het project bekeken. Het uitvoerbestand heet messages-<source>.po behalve bij "." dan wordt het messages-all.po.

Samenvoegen van de te vertalen teksten:

binfab lang.merge <project> <lang> <source>

Genereert/update een PO file voor <lang> o.b.v. (wijzigingen in) het POT file. <source> werkt als bij gettext. <lang> moet expliciet een passende code zijn dus je kunt niet alles in één laten doen met een default zoals bij init.

Het daadwerkelijke vertalen:

binfab lang.poedit <project> <lang>

Maakt het mogelijk een specifiek PO file aan te passen met POEDIT. Compileren naar MO kan vanuit dit tool (en is daarom niet voorzien in deze functiebibliotheek?).

Gebruiksklaar maken van de (bijgewerkte) vertalingen:

binfab lang.place <project> <lang> <appname>

Kopieert een specifiek <lang>.mo file naar de betreffende LC_MESSAGES directory en hernoemt het naar <appname>.mo.