Übersetzungsvorlagen reduzieren mit zusätzlichem Template-Filter

MLHT-Spezifikation in wesentlichen Teilen umgesetzt

Ein Übersetzer will nichts mit der Frage zu tun haben, mit was für Druckattributen oder Verweisen/Links ein Textstück unterlegt wird. Aber gewisse minimale Hinweise auf das Vorhandensein von solchen Elementen sind notwendig. MLHT, eine Notation für solche minimale Markierer, wird nun in den mehrsprachigen Wiki-Quelltexten von A2E unterstützt. Zugleich steht der gesamte Funktionsumfang des Perl-Bausatzes Template zur Verfügung.

Inhaltsverzeichnis

1 Lage

Wenn man etwas wie

- Die {ah dok=mlht:Spezifikation}{fn 
id=mlhtspec:auch Lastenheft genannt} ist umgesetzt.

zur Übersetzung in Auftrag zu geben hat, schreibt man einen String wie

   sep: Die %(mh|Spezifikation|auch Lastenheft 
   genannt) ist umgesetzt.

in die Datei, die der Übersetzer als Vorlage bekommt, nämlich @lng.*.txt.

Und im Dokument selber

[* BLOCK mlhtspec *]{ah dok=mlht:[* tem *]}{fn 
id=[* fnid *]:[* rem *]}[* END -*]
[* USE MLHT -*]
[* sep | mlht mh='mlhtspec fnid=mlhtspec tem rem' 
*]

Damit wird der Block sep durch den Filter ‘mlht’ geschickt, in dem wiederum der Block mlhtspec unter dem Kürzel mh aufrufbar ist, wobei dessen (immer nur positional zu verstehende) Parameter an stelle der im Block selbst verwendeten benannten Parameters ‘tem’ (Thema) und ‘rem’ (Rhema) tritt.

Def Filter ‘mlht’ steht nach einem ‘USE’-Aufruf zur beliebig häufigen Verwendung zur Verfügung.

Die Grundlagen hierfür finden sich in

  • A2E::SArb – Parser, der eine Zeichenkette mit MLHT-Konstrukten u.a. liest und einen Baum (Variablenhierarchie) zurückliefert
  • A2E::Template::Plugin::MLHT – Einschub welcher die Klasse Template::Plugin::Filter erbt und A2E::SArb einbindet. Der von A2E::SArb gelieferte Baum wird mit der rekursivenn Routine render unter Verwendung der verfügbaren Template-Blöcke zum gewünschten Ergebnis-String geformt.

Auf diese Weise sorgen wir dafür, dass Übersetzer nur noch minimale Information zum Übersetzen bekommen. Bei konsequentes Weiterentwicklung des Prinzips werden wir ganz ohne @dol-Dateien auskommen. Das ist dringend nötig, denn @dol-Dateien erfordern eine Expertise die oft nicht vorhanden sein

Die MLHT-Syntax ist hingegen für den Übersetzer nicht nur leicht zu schreiben sondern auch leicht zu verstehen, da sie von der Bedeutung der Blockmarkierere völlig abstrahiert: wichtig ist nur dass der gleichbedeutende Block (im obigen Beispiel der Block “Spezifikation”) gleich markiert wird. Ob “Spezifikation” nun fett gedruckt oder mit eine Link unterlegt wird, interessiert den Übersetzer nicht. Ebensowenig ob das Rhema “auch Lastenheft genannt” in Klammern dahinter oder als Deplate-Fußnote mit id=mlhtspec am unteren Rand steht.

Thema-Rhema ist übrigens eine bei dieser Schreibweise häufig gerne verwendete Struktur. Auch sonst wird ein mit MLHT-Markierungen versehener Text ein wenig klarer strukturiert sein als ein normaler. Innerhalb eines solchen Textes müssen Klammerpaare immer ausbalanciert sein. So etwas wie

sep2: Die %(mh|Spezifikationen 1) und 2)|auch 
Lastenheft genannt) ist umgesetzt.
sep3: Meine %(mh|Spezifikation :(-|auch Lastenheft 
genannt) ist umgesetzt.

würde zum Abbruch mit Fehlermeldung führen. Funktionieren würde hingegen

sep4: Die %(mh|Spezifikationen (1) und (2)|auch 
Lastenheft genannt) ist umgesetzt.

zusammen mit den genannten Blockdefinitionen und Filteraufrufen.

[* sep4 | mlht *]

2 Chronik

  • dat: 2008-03-10; prs: phm: apache erstellt dieses Verzeichnis
deplate
http://a2e.de/adv/08/03/mlht
© 2008-03-10 Hartmut PILCH