Pootle
Die Übersetzung der Programmoberfläche von LibreOffice und der integrierten Hilfedateien wird mit Hilfe von Pootle organisiert und verwaltet.
Pootle-Plattform
Allgemeine Hinweise
Die Pootle-Plattform befindet sich auf translations.documentfoundation.org.
Für eine Mitarbeit muss man sich dort registrieren.
Die in Pootle vorgeschlagenen Übersetzungen werden vom "Pootle-Team" geprüft bzw. freigegeben.
Pootle nicht erreichbar
Jede downtime, die länger als 10 Minuten dauert und nicht auf der l10n-Liste angekündigt wird, ist ein Störungsfall. Wenn man was davon merkt, sofort auf der de-discuss-ML Alarm schlagen.
Checkliste:
- ping funktioniert noch
- alle Webseitenzugriffe geben timeout (nicht premature end of script headers o.ä., sondern "globaler" timeout, auch die /robots.txt gibt einen Timeout)
Problemlösung: VM, in der Pootle läuft, muß von einem der Administratoren neu gestartet werden.
Suchfunktion innerhalb von Pootle
Auf der Pootle-Webseite befindet sich rechts oben ein Suchfeld. Dort den den gewünschten Suchbegriff eingeben und die Eingabetaste drücken.
Wenn der Suchbegriff weiter in Pootle gesucht werden soll ("Suchwiederholung"), muss der Button "Nächster" angeklickt werden. ACHTUNG: nicht den Button "Nächster" in der Zeile unterhalb des Menüs "Überblick Neuigkeiten etc." nehmen, sondern den Button "Nächster", der in dem Kasten der Fundstelle unten rechts angebracht ist.
Punkte, an deren Verbesserung gearbeitet wird
- Richtlinien und FAQs zur Übersetzung sind nicht (bzw. nur marginal) verfügbar.
- Übersetzer, die im Moment nur Vorschläge einreichen können, können keine Kommentare hinterlassen - es gibt kein automatisch gefülltes Translation Memory.
- Segmente mit Vorschlägen können nicht gezielt gefilter werden. Das gilt sowohl für den Review der Vorschläge (dann werden immer alle Vorschläge im Projekt aufgelistet) als auch für die Übersetzung an sich (man arbeitet sich immer nochmal durch die eigenen Vorshcläge, wenn man mal eine Übersetzungspause macht).
- Es gibt keine Statistik, für wieviele Segemente bereits Vorschläge vorliegen bzw. es gibt keine aussagefähige Statistik (analog der Übersetzungsstatistik), wieviele Vorschläge pro Verzeichnisstruktur noch zu bearbeiten sind.
- Aufbau einer Datenbank für Übersetzungsvorschläge (Beginn wurde gemacht; s. Datenbank für korrekte Übersetzungen). Wenn die KeyIDs in Pootle verfügbar wären, wäre es recht einfach möglich einen String, den man in der UI sieht, eindeutig in Pootle zu identifizieren. Nur löst das noch nicht das eigentliche Problem des Übersetzers: einen String, der in Pootle übersetzt werden soll, eindeutig (und schnell) in der UI identifizieren. Gemeint ist: Man hat die ID in Pootle, gibt die irgendwo ein und bekommt dann entweder einen Screenshot des Dialogs oder ein Makro, das den Dialog aufruft oder einfach nur die Übersetzung im Kontext (z.B. bei der Hilfe) Hauptsache, der Übersetzer weiß dann, in welchem Zusammenhang der "Satzfetzen" zu stehen hat. Oft weiß man ja nicht einmal ob der Begriff alleine steht, ob Plural oder Singular, etc.
Hinweise zur Nutzung von Pootle
Arbeitsweise
Nach der Registrierung bzw. dem Einloggen bei Pootle empfielt es sich, unter "Mein Konto" - "Einstellungen" die Projekte, die man bearbeiten möchte, fest einzustellen. In der Regel werden dies die neuesten Projekte sein.
In Pootle ist direkt ersichtlich, in welchem Bereich noch Übersetzungen durchzuführen sind. Suche einen Bereich heraus, den Du übersetzen willst bzw. klicke auf den Link des jeweiligen Bereichs.
Nimm Dir nur Umfänge vor, die auch zu schaffen sind. Für die Aufwandsabschätzung: ist man bereits geübt, sind etwa 1.000 Wörter in der Hilfe in 3-4 Stunden zu schaffen. UI-Übersetzungen benötigen etwas länger. In den Einstellungen von Pootle kann man festlegen, welche andere Sprachen als Hilfestellung mit angezeigt werden sollen. Es gibt ja ein paar Sprachen, die recht ähnlich sind, bzw. eine zusätzliche Übersetzung erleichtert manchmal die Erschließung des Kontext.
Übersetzungsprinzipien
Allgemeine Hinweise zur Übersetzung
Wenn möglich, im Browser ein Wörterbuch benutzen und auch die Kommentarfunktion benutzen, wenn etwas unklar ist.
Bitte nicht vergessen, den Status Deiner Aktivität in der Tabelle der "Koordinierung"-Wiki-Seite nachzupflegen (s. Kapitel "aktuelle Übersetzungen". Dort ist ein Link zu dem jeweils akutellen Projekt eingestellt).
Hinweise von Pootle bei fehlgeschlagenen Überprüfungen
Pootle führt automatisch Checks auf fehlerhafte Übersetzungen durch. Die Ergebnisse eines Checks werden rechts neben den Textboxen angezeigt - wie z.B. "puncspacing sentencecount"
Viele sind nur Warnungen. Aber wenn "xmltags" aufgelistet wird, dann zweimal hinschauen.
Unklarheiten bei der Übersetzung bestimmter Begriffe
Zur Vermeidung von Unklarheiten bei der Übersetzung bestimmter Begriffe, sind einige Begriffe in einer speziellen Datenbank in Pootle erfasst (s.Terminologie). Während des Übersetzens werden diese dann links neben dem zu übersetzenden Segment eingeblendet (Beispiel). Aufgrund eines Bugs in Pootle fehlt allerdings ein Kommentar zur Verwendung der Übersetzung. Dieser kann erfasst werden (und ist es auch) und sollte in Pootle angezeigt werden, wenn man mit der Maus über den Vorschlag fährt. Bug ist gemeldet, aber noch nicht so richtig in Bearbeitung (Bug).
Zusätzlich wird in diesem Wiki eine Übersicht zu bestimmten Begriffe aufgebaut (s. Datenbank für korrekte Übersetzungen).
Spezialisten für LO-Module:
Für einzelne LO-Module müssten IMHO Spezialisten ran. Mit "Spezialisten" sind Personen gemeint, die sich mit diesem Modul auskennen.
Alternativ ist es möglich, eine Liste der unklaren Begriffe an die de-discuss-ML zu schicken, und nach jemanden zu fahnden, der sich damit auskennt.
Idee: IRC-Session organisieren, in der sich mehrere Übersetzer treffen. Dort können dann viele Fragen direkt geklärt werden, ohne die Verzögerung über die Mailingliste.
Online-Übersetzung
Die Übersetzungsvorschläge können direkt in Pootle vorgenommen werden. Benutze dazu den Link "Schnellübersetzung" im Register "Übersetzen" des jeweiligen Bereiches. Dort werden dann direkt Deine Vorschläge erfasst.
Fragestellung: was passiert mit den Übersetzungen, die der "online-Übersetzer" durchgeführt hat, wenn der "offline-Übersetzer" die übersetzte po-Datei wieder uploadet?
Antwort: der Upload basiert genauso wie die Online-Übersetzung auf einem Berechtigungssystem. Wer online nur Vorschläge erfassen darf, darf eine Datei auch nur so hochladen, dass geänderte Übersetzungen als Vorschlag erfasst werden. Diese tauchen dann zusätzlich zu ggf. bereits vorhandenen auf. Wer online direkt übersetzen (und damit andere Übersetzungen überschreiben) darf, darf eine Datei auch in diesem Modus hochladen. Die in Pootle vorhandene Datei wird dabei komplett übersetzt, evtl. vorhandene Vorschläge bleiben aber erhalten.
Offline-Übersetzung
Es ist auch möglich (und zu empfehlen), die Dateien herunterzuladen und offline zu bearbeiten. Klicke dazu in Pootle auf "Übersetzen" und lade die einzelne Datei per "Herunterladen" oder einen ganzen Verzeichnisbaum per "ZIP des Verzeichnises" herunter. Gearbeitet werden kann dann mit jedem PO-Editor (z.B. Poedit, Lokalize oder anderen). Zum Hochladen der Dateien wechsele in Pootle in das entsprechende Verzeichnis, dort auf "Übersetzen" klicken und die Datei zum Hochladen angeben. Dabei "Alle Übersetzungen als Vorschläge hinzufügen" markieren.
Bitte nicht(!) mit XLIFF arbeiten. Erklärung (bitte anklicken)
Button "Schnellübersetzung" in Pootle
Bei der Benutzung des Buttons/Links "Schnellübersetzung" für die jeweilige Datei u./o. das Verzeichnis in Pootle werden automtisch die neuen (und nur die) Übersetzungen durchlaufen.
Links im Übersetzungstext
Links/Verweise müssen grundsätzlich übernommen werden. Beispiel:
- Englisch: <link href="text/shared/main0204.xhp" name="Table Bar">Table Bar</link>
- Deutsch: <link href="text/shared/main0204.xhp" name="Symbolleiste Tabelle">Symbolleiste Tabelle</link>
Wenn die Links unterschiedlich sind, bedeutet dies, dass beim Klick in der Deutschen Hilfe auf "Symbolleiste Tabelle" eine andere (bzw. eine nicht-vorhandene) Hilfeseite aufgerufen wird und nicht die Hilfeseite, die in der englischen Fassung vorgesehen ist.
Fragestellung: Wie kann ich eine Übersetzung vorschlagen, wenn ich den Kontext nicht kenne?
Allgemeine Bemerkungen
Es ist nicht möglich, in Pootle sehen zu können, an welcher Stelle im Programm oder in der Hilfe sich der zu übersetzende Abschnitt befindet, weil es kein System gibt, das einem anhand der ID den entsprechenden Dialog/das entsprechende Menü zeigt.
Andersrum geht es (über einen leichten Umweg) mittels den key-ID builds (key-ID in der kid.sdf nachschauen, dann hat man die ID nach der man in pootle suchen kann. Diese Richtung könnte man noch abkürzen/automatisieren).
Aber es gibt einen EasyHack dazu der zumindest als Basis dienen kann: Development/Easy Hacks#Web search for UI strings.
Bisher gibt es nur den Weg: paragraph-ID string anschauen und ggf. ist der schon aussagekräftig genug um zu wissen wozu der gehört, ansonsten ID in opengrok suchen ([1]) - dann bekommt man ein resource-File, in denen dann zumindest andere zum entsprechenden Dialog gehörende Strings gelistet sind, und damit kann man dann meistens was anfangen.
Beispiel
Beispiel: Save original Basic code -> ist damit gemeint
- Speichere den ursprünglichen Basiscode oder
- Ursprünglichen Basiscode speichern
Antwort:
- Übersetzung liegt in der Freiheit des Übersetzers.
- Allerdings wird in der Oberfläche eher der Aufbau "Objekt Prädikat" genutzt.
- Also... "Ursprünglichen Basiccode speichern"
Fragestellung: was ist mit den als "fragwürdig" markierten Einträgen?
Bitte auch Vorschläge zu den als "fragwürdig" markierten Einträgen erfassen, auch wenn die aktuelle Übersetzung bereits korrekt ist.
Fragestellung: Wortlänge der deutschen Übersetzung
Grundsätzlich darf die Übersetzung nicht deutlich länger als das englische Original sein, da der Text sonst nicht in den Dialog passt.
Beispiel:
- Englisch: Tel. (Home/Work)
- Deutsch (richtig): Tel. (Priv./Berufl.)
- Deutsch (falsch) : Tel. (privat/geschäftlich)
Fragestellung: Welche Einträge sollen bearbeitet werden?
Bitte nur die wirklich neuen Einträge bearbeiten, d.h. die als "unübersetzt" bzw. "als fraglich" gekennzeichneten Einträge bearbeiten).
Generelle Änderungen der bestehenden UI-Übersetzung sind in der Regel kontraproduktiv und sollten nur außerhalb des normalen Releasezykluses und nur nach Absprache gemacht werden. Viele der Übersetzungen sehen zwar evtl. nicht ideal aus, es gibt aber meistens einen Grund, warum sie so sind, wie sie sind.
ahelp
Mit "ahelp" gekennzeichnete Passagen werden als erweiterte Tipps angezeigt, d.h. Sie erschienen immer wenn man über ein UI-Element fährt.
Beispiel und weitere Erklärung s. Datenbank für korrekte Übersetzungen unter dem Stichwort "Click to open a toolbar ...".
Mnemonic (Tilde-Zeichen)
Ein Mnemonic (Tilde-Zeichen) ist der unterstrichene Buchstabe in einem Menü oder Dialog, mit dem der Eintrag direkt angesprungen werden kann. Um den Zugänglichkeitsrichtlinien zu entsprechen, sollte jeder Menüpunkt und auch jedes Dialogelement einen eindeutigen Mnemonic haben. Generell sollte ein Mnemonic in der Übersetzung gesetzt werden, wenn es im englischen Original gesetzt ist.
Problem der korrekten Position des Mnemonic
In Pootle wird in der Regel eine bestimmte Position des Mnemonic vorgeschlagen. Diese Position kann/soll zunächst übernommen werden, d.h. es ist egal, welcher Buchstabe mit einem Mnemonic versehen ist - außer es ist offensichtlich, dass dieses Mnemonic in dem Menüpunkt oder Dialogelement doppelt vergeben ist. Optimal ist es, sich die unklaren Punkte zu notieren und später im Programm nachzuschauen, ob die Position des Mnemonic passt (oder eben nicht).
Beispiel:
- Englisch: Lo~ad Basic code
- Deutsch: Basic Code l~aden
Problem der Position des Mnemonic vor einem Umlaut (z.B. "ä")
Die Position des Mnemonic vor einem Umlaut (z.B. "ä") sollte vermieden werden. Wenn alle anderen Buchstaben vergeben sind, kann das Mnemonic auch vor einem Umlaut gesetzt werden. Dies ist nur dann problematisch, wenn jemand mit deutscher UI ohne deutsche Tastaturbelegung arbeitet.
Bedingungsabfragen
Bedingungsabfragen werden zum Beispiel benötigt, wenn ein englischer Originalbegriff im Deutschen zwei Bedeutungen hat, die abhängig von der aktuell verwendeten Komponente von LibreOffice sind. Pootle hat mit den Bedingungsabfragen nichts zu tun bzw. diese werden später von LibreOffice interpretiert. Beispiel:
- englisch
- deutsch -> Impress: "Folie"
- deutsch -> Draw: "Seite"
Beispiel für eine typische Snytax:
"Sprung zur vorhergehenden <switchinline select="appl"><caseinline select="IMPRESS">Folie</caseinline><defaultinline>Seite</defaultinline></switchinline>"
Erklärung:
- switch → was soll überprüft werden
- case → was ist, wenn die Bedingung zutrifft (der Wert, der durch das switch ausgewählt wird, mit dem case-Argument übereinstimmt), was wenn nicht.
- switch statement ist vergleichbar mit if-then-else, nur daß im ggf. vorhandenen elseif immer die disselbe Variable wie im ersten if verwendet wird.
Mit <switchinline></switchinline> (switch in line = Wechsel in der Zeile) wird eine Bedingung eingeleitet, das Argument "select" (= Auswahl) bestimmt, um was für einen Wechsel es sich handelt, in diesem Fall "appl" (application = Anwendung) soll die Anwendung gewechselt werden.
Die beiden folgenden Ausdrücke geben für die jeweilige Anwendung (Komponente) an, was an dieser Stelle stehen soll:
<caseinline>(Text)</caseinline> (case = falls) leitet den Zeilenwechsel ein, "select" gib die Komponente an, für die der Wechsel vollzogen werden soll, im genannten Fall für "IMPRESS". Der eingeschlossene (Text) wird nur für diese Komponente ausgegeben.
<defaultinline>(Text)</defaultinline> schließt den Standardtext ein, der bei allen anderen Komponenten ausgegeben werden soll.
"Übersetzung" der Syntax anhand des o.g. Beispiels:
- Das Beipiel gilt für den Pootle-Eintrag "LibreOffice 3.4.x – Help » simpress / 01.po"
- Wenn die Hilfe aufgerufen wird, überprüft das Programm "LibreOffice", welche Komponente gerade aktiv ist (switchinline select="appl").
- Wenn Impress aktiv ist (caseinline select="IMPRESS"), wird der Text "Folie der Präsentation." angezeigt.
- Wenn Draw aktiv ist, wir der Text "Seite." angezeigt.
Unterschied zwischen "Vorschlag" und "Übersetzen"
Wenn direkt übersetzt werden würde, ist später nicht mehr erkennbar, ob die Übersetzung schon seit Jahren drin ist oder eben grad erst neu ist. Bei neuen Übersetzungen ist das Fehlerrisiko recht hoch. Darum arbeiten wir da nach Vier-Augen-Prinzip. Also .. einer schlägt vor, ein anderer Bestätigt den Vorschlag.
Fehleranzeigen löschen
Fehleranzeigen, hinter denen eigentlich kein Fehler steckt (d.h. am Ende im Produkt gibt es kein Problem), können gelöscht werden, indem man das rote Kreuzchen neben der Fehlermarkierung anklickt.
Tipps und Tricks für schnelles und sicheres Arbeiten
Terminology
Die Terminology besteht aus zwei Dateien. In der Datei libo_general_de.po sind einige Übersetzungsvorschläge enthalten. Diese Übersetzungsvorschläge findest Du im linken Bildrand in Pootle. Dort ist der englische Originalbegriff aufgeführt und der deutsche Übersetzungsvorschlag. Wenn Du Dich im Übersetzungsfeld (!) befindest, das englische Wort markiert ist und Du dann auf den Übersetzungsvorschlag klickst, wird dieser automatisch im Übersetzungsfeld anstelle des markierten Wortes eingetragen.
Tastenkombinationen
- Alt + ⇧ Umschalt + C : Quelle in Ziel kopieren
- Alt + ⇧ Umschalt + E : Vorschlagen
- Alt + ⇧ Umschalt + B : zum vorigen Segment springen (je nach Kontext)
- Alt + ⇧ Umschalt + K : zum nächsten Segment springen (je nach Kontext)
- Alt + ⇧ Umschalt + S : Senden (sofern Berechtigung vorhanden ist)
- Alt + ⇧ Umschalt + F : Status "fragwürdig" aufheben / setzen (sofern Berechtigung vorhanden ist)
XML-Elemente kopieren
XML-Elemente (häufig in der Hilfe verwendet) lassen sich einfach in die Übersetzung kopieren, indem man sie mit der Maus anklickt. Dabei wird die aktuelle Markierung im Übersetzungsbereich ersetzt.
gsicheck
Gsicheck ist ein Kommandozeilentool, das strukturelle Fehler in den Übersetzungsdateien aufspüren kann. Allerdings prüft es Dateien, die nur innerhalb des OOo-/LibO-Buildprozesses verwendet werden und in einem OOo-eigenen Format (sogenannte gsi- bzw. sdf Dateien). Außerhalb von OOo/LibO dürfte kaum jemand dieses Werkzaug kennen.
Gsicheck kann kann strukturelle Fehler in den Übersetzungen aufdecken und (begrenzt) auch korrigieren. Auf folgender Wiki-Seite ist beschrieben, wie man damit eine Übersetzung prüfen kann: TipsTricksl10n.
Der "normale" Übersetzer in Pootle hat mit gsicheck nichts zu tun. Die Beschäftigung mit gsicheck macht nur dann Sinn, wenn man sich ein wenig tiefer mit den technischen Hintergründen der Übersetzung befasst.
Es ist vorgesehen, gsicheck in naher Zukunft durch ein anderes Prüfprogramm zu ersetzen, da es für einen Workflow benötigt wird, den in der freien Softwarewelt außer der TDF keiner einsetzt.
"Hilfe" in LibreOffice -> Hinweise und Brainstorming
Anleitung von Mechtilde: (OOo-Projekt; Stand: 2007).
Wenn man die (installierte) Hilfe modifiziert hat, dann gibt es eine Möglichkeit die entsprechenden Seiten/Abschnitts-Namen/IDs zubenutzen.
Sprich: man muß das xslt austauschen, wie in i#56321 beschrieben. Aber wie man an dem Issue sieht gibts immer wieder eine neue Datei, sprich hängt von der Version ab, sprich die main_transform.xsl aus demissue muß nicht unbedingt mit LO funktionieren.
Mit der Anleitung von Mechtilde sieht man explizit den Unterbau der Hilfe, z.B. daß einAbschnitt aus Datei "shortcut_writing.xhp" kommt und id"#par_id3141836.5" hat.
Weitergehende Erklärungen
Warum sollte nicht mit XLIFF gearbeitet werden?
Der LiBo-Build-Prozess basiert im Moment rein auf po. Für die Umsetzung der Einbeziehung von XLIFF fehlt aber dem Lokalisationsteam die Zeit. Außerdem wäre die Verwaltung von XLIFF-Dateien im SCM eher schwierig, da sich die XML-Daten bei Bearbeitung mit dem OLTE komplett ändern und ein "diff" nahezu unmöglich ist.
Da in Pootle direkt PO-Dateien liegen, findet beim Download von XLIFF ein Konvertierungsschritt statt, der immer ein wenig Informationverlust bedeuted. Der Upload ist bisher vollkommen ungeklärt. Wahrscheinlich werden Änderungen in XLIFF-Dateien nicht in die PO-Daten gemerged, sondern liegen dann vollkommen sinnlos parallel.
Es gibt kaum freie Werkzeuge, die sinnvoll mit XLIFF umgehen können. Die einzigen, bei denen man die Vorteile von XLIFF nutzen kann, sind OLTE und Lokalize. OLTE wird nicht weiterentwickelt.
Langfristig wächst die Unterstützung für XLIFF in freien Projekten nicht. XLIFF ist recht komplex und auf komplexe Workflowas ausgelegt. Die Diskussionen zu XLIFF 2.0 bestätigen das. Freie Projekte tendieren aber im Lokalisierungsbereich eher zu vereinfachten Workflows und werden wohl bei po als Dateiformat bleiben.