Multilingualer Hypertext

Textbausteine für nachhaltige Mehrsprachigkeit

Wir schreiben Texte nur noch in Form von Bausteinen, die je nach Zweck automatisch umgeformt werden können. Das Format hat ein Übersetzer in wenigen Minuten erlernt. Wie die Bausteine eingesetzt werden sind, bestimmen Redakteure, die von den verwendeten Sprachen nichts verstehen müssen.

1 Chronik

2009-04-25 :: Erweiterung der Textbausteinsprache: zu den if-Anweisungen gibt es jetzt nicht nur eine else-Alternative sonder beliebig viele mit neuen Vergleichsbedingungen (z.B. elifdef, elifndef und elifeq, s. Quelltextdokumentation).

2009-04-24 :: Erweiterungen der Textbausteinsprache: fill akzeptiert nun neben den Textattributen auch frei benennbare Textstücke wie call; mit lassen sich Listen von Nomina, die durch Konjunktionen verbunden werden, sprachunabhängig darstellen.

2009-04-24 :: Bausteine lassen sich nun auch jederzeit leicht in umgekehrter Reihenfolge anordnen. Dazu haben wir das Präfix revargs eingeführt. Man setzt es vor eine Verknüpfungsfunktion wie call oder proc.

2009-04-23 :: Das Verwenden fremder Vokabulardateien ist bequemer geworden. Wenn eine inkludierte Vokabulardatei aktualisiert wurde, wird jetzt beim Make-Aufruf automatische alles aktualisiert, was von ihr erzeugt wurde. Innerhalb solcher Dateien können relative Pfadnamen verwendet werden. Die jeweilige Datei wird zum Bezugspunkt, auch wenn sie aus einem fremden Verzeichnis aufgerufen wurde.

2 Wozu “Multilingualer Hypertext”?

Bessere Rollentrennung bei der Entwicklung von Text

  • Der Übersetzer schreibt nur schlichte Textdateien, in Layout-Attribute nicht festgelegt sondern allenfalls durch minimale Markierungen (kurze Platzhalter für anonyme Textstücke und Textattribute) angedeutet sind.
  • Der Redakteur kann einmal vorhandene mehrsprachige Bausteine ohne Sprachkenntnisse immer wieder neu einsetzen und dabei manuell oder regelbasiert gemäß den unterschiedlichsten Formatanforderungen anordnen.

Man kann Dokumente rein dadurch erstellen, dass man Bausteine definiert und passend benennt. Darüber hinaus können bestehende Textprogrammierungssprachen (TT2,Deplate) können zur Erweiterung der Bausteinsprache eingesetzt werden.

  • Über Textbausteine kann man Korrelationen zwischen Dokumenttypen und relationalen Datensätzen definieren. Verschiedene Dokumenttypen haben ihre eigenen erweiterten Dokument-Metadaten. Dadurch wird die Dokumentation zur Datenbank.
  • Zu jedem Dokument gibt es eine eigene kleine und schnelle Datenbank (Berkeley SDBM), die alle Textbausteine (nicht nur die als Metadaten definierten) enthält.
  • Jedes Dokument ist durch ein unveränderliches Zeichen definiert. Darüber können fremde Dokumente auch dann noch richtig zitiert und Textbausteine daraus auch dann noch gefunden werden, wenn die Dokumente ihren Ort gewechselt haben oder über ihnen liegende Verzeichnisse umbenannt worden sind.

Man braucht keinen Netzzugang, um zu arbeiten. Mehr als ein unvernetzter Rechner mit Texteditor ist nicht erforderlich.

  • Zusammenarbeit wird nicht über ein spezielles Redaktionssystem sondern über ein beliebiges universelles Kollaborationswerkzeug verwirklicht. Sobald gültige Textbausteine in das gemeinsame Depot eingeliefert wurden, werde sofort alle davon abhängigen Dokumente automatisch neu erzeugt.
  • Sämtliche zur Erzeugung der Dokumente benötigten Programme und Daten sind frei verfügbar und funktionieren auf einem unvernetzten lokalen Arbeitsrechner ebenso wie im Netz. Außer dem Kollaborationssystem gibt es keine zentrale Resource, auf die alle zugreifen müssen. Selbst die relationale Datenbank ist eine sekundäre Resource, die von jedem Benutzer jederzeit lokal erzeugt werden kann. Das Ideal des Totalen Informationsbesitzes wird auf einer neuen Stufe verwirklicht.

3 Systemvoraussetzungen der Erzeugungsumgebung

Um vollwertige Übersetzungen zu erstellen, braucht man nur einen Texteditor, egal auf welchem Betriebssystem, vorzugsweise mit der Fähigkeit, den Text in UTF-8 (Unicode) zu kodieren. Die folgenden Voraussetzungen muss man nur dann erfüllen, wenn man das multilinguale Redaktionssystem von A2E bei sich installieren will. Wer eine Linux-System, insbesondere Opensuse, bei sich installiert hat, erfüllt sie fast von selbst alle.

Perl :: Diese Programmierumgebung läuft praktisch auf allen Betriebssystemen. Unsere Perl-Bibliotheken greifen auf zahlreiche CPAN-Module zurück. Zentrale Rollen spielen dabei Template, AppConfig, SDBMFile und SVN::Client.

Subversion :: Dieses Kollborationssystem läuft praktisch auf allen Betriebssystemen. Man kann es auch abschalten und nur lokal arbeiten. Wir könnten bei Bedarf auch ander Systeme wie Git unterstützen.

Deplate :: Dieser Textkonvertor erzeugen aus einem wiki-ähnlichen erweiterbaren Quellformat Zielformate wie HTML, PDF und Docbook. Das System ist für die Unterstützung weiterer Textkonvertoren ausgelegt, doch weit entwickelt ist nur die Arbeit mit Deplate. Deplate erfordert die Programmierumgebung Ruby, die ebenso wie Perl überall verfügbar ist.

PostgreSQL :: Dokument-Metadaten werden in einer relationalen Datenbank gespeichert. Bei uns ist das PostgreSQL, aber MySQL und alles, was das Perl-Modul DBI unterstützt, sollte ebenso funktionieren.

GNU Make :: Die Regeln zur Erzeugung der sekundären aus den primären Dokumenten werden in Steuerdateien (Makefiles) angegeben, die wir mit GNU Make auszuführen sind. Unsere Textbausteindateien werden manchmal ebenfalls von Make verwendet, da die von uns implementierte Textbausteinsprache eine Variante der Make-Sprache ist.

Grundsätzlich sollte unsere Umgebung auf fast allen Betriebssystemen funktionieren, aber erprobt ist sie im Moment nur auf GNU/Linux, und automatisch installierbare Pakete gibt es nur für Opensuse.

4 Installation

Notwendig sind die Pakete perl-A2E, a2e-mktdir, a2e-mlht-tmpl und a2e-bin. Man installiere sie unter Opensuse mit Zypper oder man entpake die ebenfalls vorhandenen Tar-Pakete und installiere sie mit make install.

5 Wie man Textbausteine schreibt

Man beginnt, indem man in eine sprachabhängige Textdatei einige dynamische Textbausteine schreibt und eindeutig benennt. Dabei kann man sprachunabhängige Elemente mit Konstrukten wie nummerierten Variablen kennzeichnen und Textblöcke (oder auch Textblockgruppen) mit anonymen Attributen umklammern. Ob ein solches Attribut etwa als Fettdruck oder Hyperlink wiedergegeben oder auch übergangen wird, legt nicht der Übersetzer sondern der Redakteur fest.

Die so erstellte Textdatei kann übersetzt werden. Die Namen und Kennzeichnungen werden dabei unverändert in gleicher Funktion auf gleiche Weise verwendet.

In einer sprachunabhängigen Datei werden die dynamischen Textbausteine ausgewertet und in neuen statischen Textbausteinen gespeichert. Wie in der Make-Sprache geschieht dies dank Verwendung von Zuweisungen mit ‘:=’ statt bloßem ‘=’. Für die Einfüllung geeigneter Werte sorgen Funktionen wie .

Spezielle Variablen wie top_jungils sorgen dafür, dass mit geeigneten Zählsuffixen benannte Textbausteine auf eine bestimmte Weise zu Dokumenten verknüpft werden. Verknüpfungsregeln können sowohl in der Textbausteinsprache als auch in TT2 definiert werden.

Im Dokument selber können Elemente der Textbausteinsprache in einem Deplate-Quelltext verwendet werden, der vielleicht anfangs in einer Sprache geschrieben ist aber dann im Laufe der Entwicklung immer stärker davon abstrahiert. Dies geschieht durch Einsatz von TT2-Konstrukten.

Neben der statischen Verwendung von Textbausteinen als TT2-Variablen gibt kann man auch dynamische Bausteine unter Zugriff auf Methoden der Textbausteinsprache expandieren. Ein ausgereiftes Dokument besteht letztendlich nur noch aus einem Aufruf der virtuellen Methode litscat, die den Textbaustein der obersten Ebene bestimmt und ihm die Regie übergibt.

6 Unterlagen

text Einführung dynamischer Variablen in Dokumentvorlagen: Graubereich zwischen Dokumenten und Textstücken beiderseitig ausgefüllt: Bis vor kurzem hat das A2E-Textbausystem darauf bestanden, dass alle Textbausteine in endgültiger Form vorliegen müssen, bevor eine Dokumentvorlage mit ihnen gefüllt werden kann. Mit dieser scharfen Trennung sorgten wir für eine sehr schnelle Kompilierung der Vorlage, ließ aber viele Wünsche offen, die wir uns nun behutsam erfüllen.
text PM-Entwurf: Sprachunabhängiger Textbau auf neuem Niveau: Textbausteinsystem von A2E erreicht Version 0.3: Statt einen zusammenhängenden Text zu schreiben, definiereren wir jetzt nur noch die Bausteine dieses Textes. Über den Zusammenbau dieser Bausteine zum Dokument entscheiden wir jederzeit unabhängig davon. Auch zwischen Bausteinen und relationalen Datentabellen lassen sich Zuordnungen herstellen. So wird der Text zur Datenbank. Das erfordert einen Schreibstil, der nun auch für die Erstellung normaler Dokumente nicht mehr zu aufwendig ist.
text Textbau-Verben erhalten eigenen Namensraum: Miniverb-Konstrukt macht multilinguale Textbausteine robuster: Man kann seit heute “e” zum Markierer für “Emphase” und “tr” für “Thema-Rhema” machen und zugleich “e” und “tr” unbekümmert als Namen von Textbausteinen verwenden. Dies Textbausprache reift zusehends.
text Perl-Module bei A2E: Programmlogik, Datenbank und Hypertextdateisystem: Bibliotheken A2E::Prog, A2E::Daba, A2E::Lokvars, A2E::Dokfs, A2E::SArb für Grundfunktionen fast jedes Perl-Programms bei A2E und speziell für die redundanzarme Verwaltung mehrsprachiger Dokumentation
text mktdir, mvtdir, rmtdir & co: Werkzeuge für ein Hypertext-Dateisystem: Wer ein neuen Ast erstellt, sollte dazu nicht ‘mkdir’ sondern ‘mktdir’ aufrufen. Dadurch wird weit mehr als ein neues Verzeichnis erzeugt. In ähnlicher Weise gibt es zum Umbenennen, Verschieben und Löschen Pendants höherer Ebene, die nicht nur im Dateisystem sondern in der Hypertext-Datenbank und dem Subversion-Archiv ihre die entsprechenden Operationen durchführen.
text Multilingual Hypertext Template Directories: A Template and a set of Vocabulary Building Files Each: Each Multilingual Hypertext Template Directory contains one language-neutral Template that can be written using the full range of Perl Template Toolkit Language expressions, and a set of vocabulary makefiles that are written using the A2E Vocabulary Makefile Language, similar to that of GNU Make. For convenience of use, the directories are grouped by applications and language conventions.
text Abgepackte Software: Der Softwarestapel von A2E.de in RPM-Paketen: Die von uns verwendeten und entwickelten Systeme werden allmählich so verpackt, dass man sie mit einem einzigen Befehl installieren kann. Wir bauen dabei zunächst auf openSUSE 10.3, machen aber zugleich die Umverpackung für andere Distributionen möglichst leicht.
deplate
http://a2e.de/adv/mlht
© 2006-12-17 Hartmut PILCH