# Computerbasierte Übersetzung

Dieses Buch steht im Regal EDV.

## Zusammenfassung des Projekts

Dieses Buch wird durch intensive Zusammenarbeit sicher schnell besser. Der Hauptautor freut sich über jeden, der mitmacht. Kaputtmachen kannst du nicht viel – also sei mutig. Wenn etwas nicht passt, rührt sich der Hauptautor bestimmt. Danke.
* Zielgruppe: Computernutzer, die Deutsch als Muttersprache sprechen und die Englisch so gut beherrschen, das sie eine Übersetzung eines Programmes in die Muttersprache hinbekommen.
* Lernziele: Die zukünftigen Übersetzer lernen hier den Umgang mit Übersetzungswerkzeugen, wie sie für die Übersetzungsarbeit an freier Software benötigt werden. Exemplarisch wird dazu das Programm Poedit vorgestellt. Außerdem erklärt es den Ablauf der Mitarbeit an Open-Source-Projekten und die Grundlagen von GNU-Gettext.
* Buchpatenschaft / Ansprechperson: Zur Zeit niemand. Buch darf übernommen werden.
Früher: SvonHalenbach
* Hinweis: Buch scheint verwaist zu sein (Hauptautor ist seit 2012 nicht mehr auf WB aktiv).@SvonHalenbach: Wenn du noch an dem Buch arbeiten möchtest, dann mache diese Änderung bitte rückgängig.
* Sind Co-Autoren gegenwärtig erwünscht? Ja, Bitte.
* Richtlinien für Co-Autoren:Bitte keine Schreibfehler korrigieren. Das wird dann getan wenn das Buch den Status 9 erreicht hat. Der Leser soll gesiezt werden.
* Projektumfang und Abgrenzung zu anderen Wikibooks: Dieses Buch beschreibt nur den Ablauf auf der Übersetzerseite. Um ein Programm (sourcecode) mit Gnu-Gettext übersetzbar zu machen sind andere Arbeitsschritte vom Programmierer nötig. Deshalb möchte ich es nicht hier einfügen, weil das Buch sonst zu umfangreich und unüberschaubar wird.
* Themenbeschreibung: Gnu-Gettext, locale-Einstellung der Glib von Linux, Internationalisierung, Arbeitsablauf der Übersetzung am Computer, Poedit, Umgang mit SVN auf der Kommandozeile und mit grafischem Frontend im Windowmanager KDE (Kdesvn). Am Beispiel eines fiktiven Programmes (Texteditor) soll gezeigt werden, was vom Übersetzer getan werden muss. Dieses Buch bezieht sich auf die Übersetzung von Englisch zu Deutsch, da Englisch die häufigste Quellsprache ist. Quellsprache ist die, in der der zu übersetzende Text des Programms geschrieben wurde.
* Aufbau des Buches: Einleitung, Schnellanleitung für Ungeduldige, Grundlagen: (Gettext,Benutzung von Poedit,Benutzung von SVN,Konsolenbefehle), Tipps aus der Praxis für neue Übersetzer.
Es ist später geplant dieses Buch für die englische Wikibooks zu übersetzen, damit es dann in andere Sprachen übersetzt werden kann.

## Computerbasierte Uebersetzung
### Einleitung

In dem Buch geht es, wie der Titel schon sagt, um die Übersetzung von open-source-software am Computer mit Programmen, welche Gnu-Gettextdateien verarbeiten können. Es soll an zwei der verfügbaren Programme, Kbabel und Poedit, gezeigt werden, wie der Computer und das Übersetzungsprogramm für die Arbeit eingerichtet wird. Es sollen möglichst alle Funktionen der Programme erklärt werden und der zukünftige Übersetzer soll an die Hand genommen werden, bis die übersetzte Datei auf einem Server abgelegt wurde.

### Schnelleinstieg

* Frage: Ist das Programm es wirklich wert übersetzt zu werden, oder wäre die Übersetzungsarbeit an einem anderen Projekt vieleicht besser investiert? Übersetze möglichst keine Software im Alpha-Stadium. Beta-Stadium ist der früheste Augenblick, um eine Übersetzung zu beginnen. Manche Programme kommen nie über das Alpha-Stadium hinaus. Die Arbeit wäre dann vergebens.
* Übersetzungstool installieren. Poedit funktioniert auf Windows und Linux. www.poedit.net
* Von dem Projekt die *.pot-Datei herunterladen wenn bisher noch keine deutsche Übersetzung angefangen wurde. Wenn es eine *.pot-Datei ist, wird sie in Poedit erst noch zu einer *.po-Datei umgewandelt. Sonst die Datei de.po herunterladen. Diese kann auch etwas anders heißen, endet aber immer auf .po. Darauf achten immer die neueste Datei zu bekommen. Am besten direkt aus dem Internet per SVN oder CVS herunterladen.
* Poedit starten und die Datei laden.
* In Poedit stehen oben die unübersetzen Originalstrings und im unteren Bereich des Fensters werden die zugehörigen Übersetzungen eingetragen. Zwischen diesen beiden Fenstern wird mit der TAB-Taste hin und hergewechselt. Mit den Cursortasten kann im oberen Fenster hoch und runter gewechselt werden, um zum nächsten unübersetzten String zu wechseln. Mit der Tastenkombination ALT + C, kann der Text vom oberen in das untere Fenster kopiert werden.
* Wenn die Übersetzung fertig ist, auf Speichern drücken. Damit wird auch gleichzeitig im gleichen Verzeichnis wie die *.po-Datei eine weitere Datei namens messages.mo von Poedit erzeugt. Das ist die Binärdatei mit der deutschen Übersetzung. Diese kann in das entsprechende Unterverzeichnis des zu übersetzenden Programmes kopiert werden, um die neue Übersetzung zu testen. (Es kann sein, das der Dateiname noch angepasst werden muss, weil das bei jedem Programm unterschiedlich gehandhabt wird.)
* Die de.po wird dann (gepackt als zip oder tar.gz) an das Projekt per email geschickt oder in dessen Patchtracker getan.
* Fertig. Wenn sie einzelne Anweisungen in dieser Kurzanleitung nicht verstanden haben, dann lesen Sie bitte erst die komplette Anleitung.

### Gnu-Gettext erklärt. Die Grundlagen

* pot
* po
* mo
Eine Datei mit der Endung .pot ist eine Po-Templatedatei. Template heißt soviel wie Vorlage oder Grundgerüst. In ihr sind die gesamten englischen Strings enthalten, die es später in verschiedene Sprachen zu übersetzen gilt. Außerdem hat die Templatedatei einen Dateikopf, in den zur Übersetzung zugehörige Informationen, wie der Name des letzten Übersetzers und benutzter Schriftsatz für die gesamte Übersetzung, eingetragen werden. Für die Übersetzung selbst wird aber nicht die Templatedatei benutzt, denn diese ist nur das, was aus dem Sourcecode von dem Programmierer an übersetzbarem herausextrahiert wird. Sie heißt meist so, wie das zu übersetzende Programm. Zum Beispiel texteditor.pot.
Aus texteditor.pot wird dann die tatsächliche Übersetzungsdatei generiert. texteditor.po
Das erste, was der Übersetzer tun muss, ist den Dateikopf der zu übersetzenden Datei, in diesem Fall texteditor.po auszufüllen. Ein Beispiel dazu gibt es weiter unten im Text. Die Dateien haben ein bestimmtes Format, dem sie unterliegen. Das ist durch den Standard von Gnu-Gettext definiert. Deshalb sollte möglichst nicht mit einem normalen Editor in diesen Dateien herumeditiert werden, da es dabei einiges zu beachten gibt. Es gibt speziell darauf zugeschnittene Programme, die darauf achten den Standard einzuhalten und darüberhinaus dem Übersetzer die Arbeit viel einfacher machen. Zwei solcher Programme, die allgemein als Übersetzungswerkzeuge (translation-tools) bezeichnet werden, werden hier vorgestellt.
Wenn die Übersetzung weit genug fortgeschritten, oder bereits abgeschlossen ist, kann der Übersetzer die Qualität der gerade getanen Arbeit direkt in dem ui übersetzenden Programm überprüfen. Dazu wird aus der Übersetzungsdatei texteditor.po die Datei messages.mo erzeugt. Dies ist eine Binärdatei, in der die Übersetzten Strings in einem für das Programm besser lesbaren Format gespeichert sind. Binärdateien können im Gegensatz zu Ascii-Dateien nicht mit einem Editor bearbeitet, oder vom Menschen gelesen werden.
Wenn die Datei messages.mo erzeugt wurde, wird sie in das Verzeichnis für die deutsche Übersetzung kopiert, womit sie dem Programm dann zur Verfügung steht. Für die binären Übersetzungsdateien ist ein besonderer Unterverzeichnisbaum anzulegen, damit die Dateien vom Programm an der erwarteten Stelle gefunden werden können. So ein Pfad sieht meistens so aus:
Das Umwandeln in eine Binärdatei ist allerdings nur eine Kontrollmöglichkeit für den Übersetzer. Das Projekt, welches den Texteditor programmiert, braucht nur die Datei texteditor.po vom Übersetzer zugeschickt zu bekommen, denn diese Datei wird vom Programm bei jedem Kompilieren neu in eine Binärdatei gewandelt und automatisch im richtigen Unterverzeichnis abgelegt.
Hier ist auf der linken Seite ein Teil der Datei texteditor.po zu sehen. So wie in diesem Beispiel sind die Strings in der Datei angeordnet.
* Hinter der Raute und dem Doppelpunkt steht der Dateiname und die Zeilennummer aus dem der String extrahiert wurde. Der Originalstring hat immer die Bezeichnung msgid und die Übersetzung wird von msgstr angeführt. Alle Strings sind in doppelten Anführungsstrichen eingekapselt.
* Falls der String als #, FUZZY gekennzeichnet ist, dann gilt die Übersetzung dieses Strings als nicht übersetzt. Das bedeutet, das in diesem Fall die Übersetzung im Programm nicht angezeigt wird. So als wenn der String nicht übersetzt wurde. Manche Übersetzer benutzen diese Fuzzy-Markierung wenn sie sich bei der Übersetzung nicht sicher sind. Das ist aber nicht der eigentliche Zweck dieser Markierung. Sie ist für veränderte Strings, nach der ersten Übersetzung nützlich, um die Übersetzung konsistent zu halten. Wenn die po-Datei fertig übersetzt wurde und der Programmierer noch Änderungen am Programm vornimmt, welche die grafische Oberfläche oder andere Teile betrifft, die übersetzbare Strings beinhalten, ändern sich die Strings in der pot-Datei. Diese wird mit der fertigen po-Datei abgeglichen und dabei, wenn sich ein Originalstring änderte, wird die Übersetzung mit der Fuzzykennzeichnung versehen. Das gibt dem Übersetzer die Möglichkeit nur noch zu überprüfen, ob der geänderte Originalstring Einfluss auf die Übersetzung hat. Es kann auch sein, dass der Programmierer einen Tippfehler verbessert hat. Wenn es diese Kennzeichnung nicht gäbe, dann müssten sonst bei jeder kleinen Änderung in msgid alles vom Korresponierenden msgstr gelöscht werden.
* Kommentare aus dem Programm vom Programmierer an die Übersetzer werden normalerweise direkt aus dem Sourcecode in die Templatedatei exportiert. Sie erscheinen immer vor dem jeweiligen String. Die Übersetzungswerkzeuge haben extra ein separates Anzeigefenster für solche Kommentare. In ihnen kann der Programmierer erklären, was dieser String zu bedeuten hat, da manchmal nicht direkt an dem String zu erkennen ist, was gemeint wurde.
* Es macht überhaupt keinen Sinn die Originalstrings (msgid) zu bearbeiten, falls sich darin Rechtschreibfehler befinden sollten. Der Übersetzer sollte sich nur an die Übersetzung halten.
* Manchmal ist im Original eine Variable enthalten. Diese sieht dann zum Beispiel so aus: "Wikibooks is YEARS$ years old, and it has some good books, already.". Davon darf alles übersetzt werden, außer der Variablen YEARS$.

### Genereller Ablauf einer Übersetzung

Eine Übersetzung läuft immer nach dem gleichen Prinzip ab. Es ist nur von Projekt zu Projekt sehr unterschiedlich, welche Inhalte übersetzt werden müssen. Zum Beispiel ist die Übersetzung an einer Anwendung etwas vollkommen anderes als die Übersetzung eines Spieles. Bei der Anwendung sollte sich der Übersetzer strikt an eine Terminologie halten, um den Benutzern die Handhabung zu erleichtern, weil sie vielleicht schon andere Programme mit den gleichen Fachwörtern benutzt haben. Der Benutzer sollte nicht dazu genötigt werden bei jedem Programm alle Befehle neu zu lernen, weil der Übersetzer sich nicht an die bestehende Terminologie gehalten hat.
Bei einem Spiel kann es sein, das der Übersetzer ganz tief in seine Trickkiste greifen muss, um eine gute Übersetzung abliefern zu können. Phantasie und eine gewisse Hingabe ist dabei von Nöten, da es bei Dialogen häufig keine genaue Übersetzung gibt. Dabei kann der Spielraum bei der Formulierung sehr weit gefasst werden, um keine wortwörtliche Übersetzung zu produzieren. Der künstlerische Freiraum geht dabei soweit, das Sätze im Deutschen eine andere Formulierungsweise haben. Es muss nur darauf geachtet werden, das die übersetzten Dialoge wie aus einem Guss erscheinen, der Inhalt des Originals korrekt wiedergegeben wird und der Spieler nicht den Eindruck hat, das es eine Übersetzung aus dem englischen Sprachraum ist.
   * pot oder po holen
   * wenn po, mit anderen Übersetzern in Verbindung treten und koordinieren
   * Konventionen einhalten (Gibt es bereits eine Terminologie?)
   * übersetzen (Dies kundtun)
   * test der Datei
   * u.U. Konvertieren zu mo und im Programm testen
   * Datei an Projekt übertragen

#### pot oder po-Datei holen, kommunizieren

Je nach dem, ob schon jemand an der deutschen Übersetzung gearbeitet hat, wird von dem Projekt eine der Dateien heruntergeladen. Wie oben im Text schon erwähnt, kann aus einer pot-Datei eine po-Datei erzeugt werden. Sollte es schon eine po-Datei geben, in der schon etwas übersetzt wurde, dann sollte man sich mit dem vorigen Übersetzer in Verbindung setzen, um die Arbeit daran abzustimmen. Es soll schon vorgekommen sein, das zwei Leute die gleiche Arbeit getan haben, weil sie nicht miteinander kommuniziert haben. Die E-Mail-Adresse des vorigen Übersetzers steht im Kopf (die ersten 15 Zeilen) der po-Datei.

#### Terminologie

Bei größeren Softwareprojekten, die eine sehr große pot-Datei oder mehrere davon haben, kann es sein, das jemand schon eine Terminologie erstellt hat, oder das eine von Ihnen erstellt werden sollte, um bestimmte Sachen konsistent zu übersetzen. Eine Terminologie ist im Grunde nichts anderes als eine Liste von englischen Begriffen, die eine deutsche Übersetzung zugewiesen bekommen, die sie ab diesem Zeitpunkt auch behalten. Diese festzulegen ist nicht immer ganz leicht und wird am Besten mit weiteren Übersetzern der selben Sprache diskutiert. Wenn die Terminologie für einige Worte oder sogar Namen feststeht, sollte man diese nicht geheim halten, sondern möglichst auf einer Homepage für die deutsche Übersetzung oder einem Wiki des Projekts für andere deutsche Übersetzer deutlich sichtbar eintragen.

#### Test der Datei

Wenn die Übersetzung abgeschlossen ist, dann ist es üblich diese erstmal zu testen. Einmal ist es nötig das Programm mit der Übersetzung zu starten, um zu sehen ob alle übersetzten Strings auch in das Programm hineinpassen (nicht nur von der Länge, sondern auch vom Wortlaut), und zum Anderen ist es nötig die po-Datei selbst zu überprüfen, ob das Übersetzungsprogramm sie vielleicht beschädigt hat, oder ob seit dem Holen der Datei neue Strings in der pot-Datei hinzugekommen sind. Dann muss die übersetzte Datei mit der aktuellen pot-Datei zusammengeführt werden (merge). Dafür wird ein spezielles Programm benutzt, das konsistent einfach die neuen Strings in die übersetzte Datei hineinschreibt, und nicht mehr benötigte Strings herauslöscht.

#### Dateien an Projekt übertragen

Wenn das alles geschehen ist, kann die po-Datei an das Projekt geschickt werden. Dazu sollte die po-Datei, wenn sie per E-Mail übertragen werden soll, vorher noch als *.zip oder *.tar.gz gepackt, um zu verhindern, das die Übertragung die Zeichnsatzcodierung verändert. Wenn die Datei per Webinterface in den Patchtracker des Projekts gelegt wird, dann kann das Packen auch entfallen.
Bei nur wenigen Änderungen an einer bereits (fast) kompletten Übersetzung wird es von den Programmierern gerne gesehen, wenn statt der ganzen po-Datei nur ein Patch in den Patchtracker getan wird. Dadurch wird es dem Programmierer, der die Änderungen von außerhalb des Projekts in den Quellcode einfügt, erleichtert zu kontrollieren, was verändert wurde. Um die Änderungen an der po-Datei als Patch zu senden, muss zuerst ein Diff zwischen der alten po-Datei und der von Ihnen geänderten po-Datei (der neuen) angefertigt werden.
Diff ist ein Programm, das es ermöglicht, unterschiede in ASCII-Dateien aufzuzeigen. Jede Zeile die in dem Zieltext im Vergleich zum Quelltext eine Änderung aufweist, wird ausgegeben. Üblicherweise wird diese Ausgabe in eine Datei gelenkt, die die Endung .diff besitzt.
CVS und SVN
       CVS und SVN sind die Abkürzungen für Systeme, die es ermöglichen die Aufbewahrung des Quellcodes bei Softwareprojekten zu versionieren. Das bedeutet, dass damit jeder Softwarestand im Laufe der Entwicklung wieder angezeigt und hervorgerufen werden kann. Jede Änderung am Quellcode wird aufgezeichnet, und kann auch einzeln rückgängig gemacht werden. CVS ist davon das ältere System, das mittlerweile von SVN nach und nach abgelöst wird. Die Bedienung auf der Clientseite ist aber fast Identisch. Der Quellcode liegt auf einem Server im repository, aus dem es mit einer Software auf dem Computer des Anwenders abgerufen werden kann. So einen Abruf nennt man checkout.
       Für fast alle Betriebssysteme gibt es die notwendige Clientsoftware, um eines dieser Versionierungssysteme vom heimischen Computer über das Internet zu benutzen. Für Linux gibt es Clients für die Kommandozeile und einen für die grafische Oberfläche KDE. Hier wird der Umgang mit Kdesvn erklärt.
Poedit für Windows, OS_X und Linux
       Als einfach zu bedienende und sowohl für Windows als auch für Linux und OS_X erhältliche Übersetzungssoftware hat sich Poedit in den letzten zehn Jahren einen Namen gemacht.Poedit ermöglicht es dem Anwender zügig zu übersetzen. Es ist natürlich mit der Maus bedienbar, aber wer es eilig hat, der sollte die wenigen Kurztastenbefehle auswendig lernen, um ohne die Maus auszukommen.
Fragen und Antworten
* Generelle Einrichtung und Bedienung
* Möglichkeiten im Detail erklärt
* Übersetzungsspeicher

## Nützliche Kommandozeilenbefehle
### Links

http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files