Vorige: , Nach oben: Mitwirken   [Inhalt][Index]


20.10 Guix übersetzen.

Softwareentwicklung und Paketierung sind nicht die einzigen Möglichkeiten, um bedeutsam zu Guix beizutragen. Übersetzungen in andere Sprachen sind auch ein wertvoller Beitrag. In diesem Abschnitt ist der Übersetzungsprozess beschrieben, mit Hinweisen dazu wie du mitmachen kannst, was übersetzt werden kann, welche Fehler du vermeiden solltest und wie wir dich unterstützen können.

Guix ist ein großes Projekt und hat mehrere Komponenten, die übersetzt werden können. Wir koordinieren die Arbeit an der Übersetzung auf einer Weblate-Instanz, die von unseren Freunden bei Fedora zur Verfügung gestellt wird. Sie brauchen dort ein Konto, um Übersetzungen einzureichen.

Manche mit Guix auslieferbaren Pakete verfügen auch über Übersetzungen. An deren Übersetzungsplattform sind wir nicht beteiligt. Wenn Sie ein in Guix angebotenes Paket übersetzen möchten, sollten Sie mit dessen Entwicklern in Kontakt treten oder auf deren Webauftritt nach Informationen suchen. Sie können die Homepage zum Beispiel des hello-Pakets finden, indem Sie guix show hello ausführen. Auf der Zeile „homepage“ sehen Sie, dass https://www.gnu.org/software/hello/ die Homepage ist.

Viele GNU-Pakete und Nicht-GNU-Pakete können beim Translation Project übersetzt werden. Manche Projekte, die aus mehreren Komponenten bestehen, haben ihre eigene Plattform. Zum Beispiel hat GNOME die Übersetzungsplattform Damned Lies.

Guix hat fünf Komponenten, die auf Weblate übersetzt werden können.

Wie Sie allgemein vorgehen

Sobald Sie ein Konto haben, sollten Sie eine Komponente des Guix-Projekts und eine Sprache auswählen können. Wenn Ihre Sprache in der Liste fehlt, gehen Sie ans Ende und klicken Sie auf den „Neue Übersetzung starten“-Knopf. Nachdem Sie die Sprache, in die Sie übersetzen möchten, ausgewählt haben, wird eine neue Übersetzung angelegt.

Wie zahlreiche andere Freie-Software-Pakete benutzt Guix GNU Gettext für seine Übersetzungen. Damit werden übersetzbare Zeichenketten aus dem Quellcode in sogenannte PO-Dateien extrahiert.

Obwohl es sich bei PO-Dateien um Textdateien handelt, sollten Änderungen nicht mit einem Texteditor vorgenommen werden, sondern mit Software eigens zum Bearbeiten von PO-Dateien. In Weblate sind PO-Bearbeitungsfunktionen integriert. Alternativ haben Übersetzer die Wahl zwischen vielen Freie-Software-Werkzeugen zum Eintragen von Übersetzungen; ein Beispiel ist Poedit. Nachdem Sie sich angemeldet haben, laden Sie die geänderte Datei in Weblate hoch. Es gibt auch einen speziellen PO-Bearbeitungsmodus für Nutzer von GNU Emacs. Mit der Zeit finden Übersetzer heraus, welche Software sie bevorzugen und welche die Funktionen bietet, die sie brauchen.

In Weblate finden Sie an vielen Stellen Verweise auf den Editor, um Teilmengen der Zeichenketten oder alle davon zu übersetzen. Sehen Sie sich um und werfen Sie einen Blick auf Weblates Dokumentation, um sich mit der Plattform vertraut zu machen.

Übersetzungskomponenten

In diesem Abschnitt erklären wir den Übersetzungsprozess genau und geben Details, was Sie tun sollten und was nicht. Im Zweifelsfall kontaktieren Sie uns bitte; wir helfen gerne!

guix

Guix ist in der Programmiersprache Guile geschrieben und manche Zeichenketten enthalten besondere Formatzeichen, die von Guile interpretiert werden. Weblate sollte diese besonderen Formatzeichen hervorheben. Sie beginnen mit ~ gefolgt von einem oder mehreren Zeichen.

Beim Anzeigen der Zeichenkette ersetzt Guile die speziellen Formatierungsmuster durch echte Werte. Zum Beispiel würde in die Zeichenkette ‘ambiguous package specification `~a'’ die Paketspezifikation anstelle von ~a eingesetzt. Um die Zeichenkette richtig zu übersetzen, müssen Sie den Formatierungscode in Ihrer Übersetzung erhalten, aber Sie können ihn an die in Ihrer Sprache passenden Stelle in der Übersetzung verlegen. Die französische Übersetzung ist zum Beispiel ‘spécification du paquet « ~a » ambiguë’, weil das Adjektiv dort ans Ende vom Satz gehört.

Wenn mehrere Formatsymbole vorkommen, sollten Sie darauf achten, die Reihenfolge beizubehalten. Guile weiß nicht, in welcher Reihenfolge die eingesetzten Symbole auftauchen sollen, also setzt es sie in derselben Abfolge wie im englischen Satz ein.

Es geht zum Beispiel nicht, den Satz ‘package '~a' has been superseded by '~a'’ wie ‘'~a' superseeds package '~a'’ zu übersetzen, weil die Bedeutung umgekehrt wäre. Wenn foo durch bar abgelöst wird, würde die Übersetzung behaupten, ‘„foo“ löst Paket „bar“ ab’. Um dieses Problem zu umgehen, ist es möglich, fortgeschrittene Formatierung einzusetzen, mit der ein bestimmtes Datum ausgewählt wird statt der englischen Reihenfolge zu folgen. Siehe Formatted Output in Referenzhandbuch zu GNU Guile für weitere Informationen zu formatierter Ausgabe in Guile.

Pakete

Manchmal trifft man in einer Paketbeschreibung auf in Texinfo-Markup ausgezeichnete Wörter (siehe Zusammenfassungen und Beschreibungen). Texinfo-Auszeichnungen sehen aus wie ‘@code{rm -rf}’, ‘@emph{important}’ usw. Wenn Sie übersetzen, belassen Sie Auszeichnungen bitte, wie sie sind.

Die „@“ nachfolgenden Zeichen bilden den Namen der Auszeichnung und der Text zwischen „{“ und „}“ ist deren Inhalt. Im Allgemeinen sollten Sie nicht den Inhalt von Auszeichnungen wie @code übersetzen, weil Code wortwörtlich so aussehen muss und sich nicht mit der Sprache ändert. Dagegen können Sie den Inhalt von zur Formatierung dienenden Auszeichnungen wie @emph, @i, @itemize, @item durchaus ändern. Übersetzen Sie aber nicht den Namen der Auszeichnung, sonst wird sie nicht erkannt. Übersetzen Sie nicht das auf @end folgende Wort, denn es ist der Name der Auszeichnung, die an dieser Position geschlossen wird (z.B. @itemize … @end itemize).

documentation-manual und documentation-cookbook

Der erste Schritt für eine erfolgreiche Übersetzung des Handbuchs ist, folgende Zeichenketten als Erstes zu finden und zu übersetzen:

Wenn diese Zeichenketten als erste ausgefüllt wurden, ist gewährleistet, dass wir die Übersetzung ins Guix-Repository übernehmen können, ohne dass der make-Vorgang oder die Maschinerie hinter guix pull zusammenbricht.

Das Handbuch und das Kochbuch verwenden beide Texinfo. Wie bei packages belassen Sie Texinfo-Auszeichnungen bitte so, wie sie sind. Im Handbuch gibt es mehr mögliche Auszeichnungstypen als in den Paketbeschreibungen. Im Allgemeinen sollten Sie den Inhalt von @code, @file, @var, @value usw. nicht übersetzen. Sie sollten aber den Inhalt von Formatierungsauszeichnungen wie @emph, @i usw. übersetzen.

Das Handbuch enthält Abschnitte, auf die man anhand ihres Namens mit @ref, @xref und @pxref verweisen kann. Wir haben einen Mechanismus eingebaut, damit Sie deren Inhalt nicht übersetzen müssen. Lassen Sie einfach den englischen Titel stehen, dann werden wir ihn automatisch durch Ihre Übersetzung des Titels ersetzen. So wird garantiert, dass Texinfo den Knoten auf jeden Fall finden kann. Wenn Sie später die Übersetzung ändern, ändern sich die Verweise darauf automatisch mit und Sie müssen sie nicht alle selbst anpassen.

Nur wenn Sie Verweise vom Kochbuch auf das Handbuch übersetzen, dann müssen Sie den Namen des Handbuchs und den Namen des Abschnitts ersetzen. Zum Beispiel übersetzen Sie @pxref{Defining Packages,,, guix, GNU Guix Reference Manual}, indem Sie Defining Packages durch den Titel dieses Abschnittes im übersetzten Handbuch ersetzen, aber nur dann, wenn der Titel bereits übersetzt wurde. Wenn er nicht übersetzt wurde, dann übersetzen Sie ihn auch hier nicht, sonst funktioniert der Verweis nicht. Schreiben Sie guix.xx statt guix, wobei xx Ihr Sprachcode ist. Bei GNU Guix Reference Manual handelt es sich um den Text, mit dem der Verweis angezeigt wird. Übersetzen Sie ihn wie immer Sie mögen.

website

Die Seiten des Webauftritts sind in SXML geschrieben, einer Version von HTML, der Grundlage des Webs, aber mit S-Ausdrücken. Wir haben einen Prozess, um übersetzbare Zeichenketten aus dem Quellcode zu extrahieren und komplexe S-Ausdrücke als vertrautere XML-Auszeichnungen darzustellen. Dabei werden die Auszeichnungen nummeriert. Übersetzer können deren Reihenfolge nach Belieben ändern, wie im folgenden Beispiel zu sehen ist.

#. TRANSLATORS: Defining Packages is a section name
#. in the English (en) manual.
#: apps/base/templates/about.scm:64
msgid "Packages are <1>defined<1.1>en</1.1><1.2>Defining-Packages.html</1.2></1> as native <2>Guile</2> modules."
msgstr "Pakete werden als reine <2>Guile</2>-Module <1>definiert<1.1>de</1.1><1.2>Pakete-definieren.html</1.2></1>."

Allerdings müssen Sie dieselben Auszeichnungen verwenden. Sie können keine weglassen.

Wenn Ihnen ein Fehler unterläuft, kann die Komponente in Ihrer Sprache womöglich nicht erstellt werden oder guix pull kann sogar fehlschlagen. Um dies zu verhindern, haben wir einen Prozess, um den Inhalt der Dateien vor einem Push auf das Repository zu überprüfen. In so einem Fall werden wir die Übersetzung für Ihre Sprache nicht aktualisieren können und werden Sie deshalb benachrichtigen (über Weblate und/oder eine E-Mail), damit Sie die Möglichkeit bekommen, das Problem zu beheben.

Abseits von Weblate

Momentan können manche Teile von Guix noch nicht mit Weblate übersetzt werden. Wir freuen uns über Hilfe!

Bedingungen für die Aufnahme

Es müssen keine Bedingungen erfüllt werden, damit neue Übersetzungen der Komponenten guix und guix-packages übernommen werden, außer dass sie mindestens eine übersetzte Zeichenkette enthalten. Neue Sprachen werden so bald wie möglich aufgenommen. Die Dateien können wieder entfernt werden, wenn sie keine Übersetzungen mehr enthalten, weil die Zeichenketten, die übersetzt wurden, nicht mehr mit den in Guix verwendeten übereinstimmen.

Aufgrund dessen, dass sich der Webauftritt an neue Benutzer richtet, möchten wir, dass dessen Übersetzung so vollständig wie möglich ist, bevor wir sie ins Menü zur Sprachauswahl aufnehmen. Eine neue Sprache muss dazu zumindest zu 80% vollständig sein. Einmal aufgenommen kann eine Sprache dann wieder entfernt werden, wenn sie eine Zeit lang nicht mehr übereinstimmt und zu weniger als 60% übersetzt ist.

The manual and cookbook are automatically added in the default compilation target. Every time we synchronize translations, developers need to recompile all the translated manuals and cookbooks. This is useless for what is essentially the English manual or cookbook. Therefore, we will only include a new language when it reaches 10% completion in the component. When a language is included, it may be removed in the future if it stays out of sync and falls below 5% completion.

Übersetzungsinfrastruktur

Hinter Weblate steht ein Git-Repository, aus dem die Weblate-Instanz neue zu übersetzende Zeichenketten bezieht und in das sie die neuen und aktualisierten Übersetzungen pusht. Normalerweise würde es ausreichen, Weblate Commit-Zugriff auf unsere Repositorys zu geben, aber wir haben uns aus zwei Gründen dagegen entschieden. Erstens müssten wir sonst Weblate Commit-Zugriff geben und seinen Signierschlüssel autorisieren, aber wir haben in Weblate nicht auf gleiche Art Vertrauen wie in die Guix-Entwickler, besonders weil wir die Instanz nicht selbst verwalten. Zweitens könnten durch ein Missgeschick der Übersetzer dann das Erzeugen des Webauftritts und/oder guix-pull-Aufrufe für all unsere Nutzer aufhören zu funktionieren, ganz gleich was deren Spracheinstellungen sind.

Daher haben wir ein separates Repository für die Übersetzungen, das wir mit unseren guix- und guix-artwork-Repositorys abgleichen, nachdem wir geprüft haben, dass es durch die Übersetzung zu keinem Fehler kommt.

Entwickler können die neuesten PO-Dateien von Weblate in ihr Guix-Repository laden, indem sie den Befehl make download-po ausführen. Er wird die neuesten Dateien von Weblate automatisch herunterladen, in eine kanonische Form bringen und überprüfen, dass sie keine Fehler verursachen. Das Handbuch muss neu erstellt werden, um sicherzugehen, dass keine neuen Probleme zum Absturz von Texinfo führen.

Bevor sie neue Übersetzungsdateien pushen, sollten Entwickler achtgeben, dass jene Dateien eingetragen sind, damit die Make-Maschinerie die Übersetzungen auch tatsächlich bereitstellt. Der Prozess dafür unterscheidet sich je nach Komponente.


Vorige: , Nach oben: Mitwirken   [Inhalt][Index]