Multilingual Hypertext

Universal Format for Sharing Work with Translators
Deutsch

System for production of lean multilingual documentation: specification and partial implementation of a format that disentangles the competences of translators from those of writers and layouters, making multilingual documentation sustainable and even advantageous. We export and reinsert text as in GNU Gettext, but in a much more dynamic way.

1 Chronology

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 and elifeq, cf 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 and 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 and 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 Resources

text Introducing dynamic variables into document templates: Accomodating a grey area between vocabulary and templates: Currently the document templates of the A2E multilingual hypertext system only process variables that have been fully rendered into strings and stored in DBM database files before template processing began. While it is desirable to treat variables in this way for sake of speed, it is not always adequate. There is a large gray area of vocabulary expansion that we want to happen outside of DBM files, using the latest values as they were set in the tempate itself.
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: Tools for a Hypertext File System: With these commandline tools we create, copy, move and delete multilingual multiformat source documents from which monolingual monoformat target documents are created.
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 Packaged Software: The Stack of A2E.de in RPM Chunks: We package the systems that we use in such a way that they can be installed with one command. We build on openSUSE 10.3, but see to it that repackaging for other systems is made as easy as possible.
[ ADP | MLHT| Systeme| Packages| Past| Upcoming ]
Valid XHTML 1.0! Valid CSS! deplate
http://a2e.de/adv/mlht
© 2006-12-17 Hartmut PILCH