Nächste: Contributing to Guix’s Infrastructure, Vorige: Dokumentation schreiben, Nach oben: Mitwirken [Inhalt][Index]
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.
guix
umfasst alle Zeichenketten der Guix-Software (also das
geführte Installationsprogramm, die Paketverwaltung etc.) außer den Paketen.
packages
enthält die Zusammenfassungen (einzeilige Kurzbeschreibung)
und die ausführlicheren Beschreibungen der Pakete in Guix.
website
enthält den offiziellen Webauftritt von Guix außer
Blogeinträgen und Multimedia.
documentation-manual
entspricht diesem Handbuch.
documentation-cookbook
ist die Komponente für das Kochbuch.
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.
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 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.
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
).
Der erste Schritt für eine erfolgreiche Übersetzung des Handbuchs ist, folgende Zeichenketten als Erstes zu finden und zu übersetzen:
version.texi
: Übersetzen Sie diese Zeichenkette mit version-xx.texi
wobei xx
Ihr Sprachcode ist (wie er in der URL auf Weblate steht).
contributing.texi
: Übersetzen Sie diese Zeichenkette mit
contributing.xx.texi
, wobei xx
derselbe Sprachcode ist.
Top
: Übersetzen Sie diese Zeichenkette nicht; sie ist wichtig für Texinfo.
Würden Sie sie übersetzen, würde das Dokument leer (weil ein Top-Knoten
fehlt). Bitte suchen Sie die Zeichenkette und tragen Sie Top
als
Übersetzung ein.
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.
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.
Momentan können manche Teile von Guix noch nicht mit Weblate übersetzt werden. Wir freuen uns über Hilfe!
guix pull
angezeigte Neuigkeiten können in news.scm
übersetzt werden, jedoch nicht über Weblate. Wenn Sie eine
Übersetzung bereitstellen wollen, können Sie uns einen Patch wie oben
beschrieben schicken oder uns einfach die Übersetzung zusammen mit Ihrer
Sprache und dem Namen des Neuigkeiteneintrags, den Sie übersetzt haben,
zukommen lassen. Siehe Kanalneuigkeiten verfassen für weitere Informationen
zu Neuigkeiten über Kanäle.
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.
Handbuch und Kochbuch sind automatisch Teil des Standard-Ziels beim Kompilieren. Jedes Mal, wenn wir die Übersetzungen in Guix mit Weblate abgleichen, müssen die Entwickler alle übersetzten Hand- und Kochbücher neu kompilieren. Das lohnt sich nicht, wenn so wenig übersetzt wurde, dass wir größtenteils wieder das englische Hand- oder Kochbuch vor uns haben. Aus diesem Grund nehmen wir eine neue Sprache hier nur auf, wenn mindestens 10% der jeweiligen Komponente übersetzt sind. Eine bereits aufgenommene Sprache, die eine Zeit lang nicht übereinstimmt und wo weniger als 5% übersetzt sind, kann entfernt werden.
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.
guix
und packages
müssen registriert werden, indem man die neue Sprache in
po/guix/LINGUAS oder po/packages/LINGUAS hinzufügt.
documentation-manual
müssen
registriert werden, indem man deren Dateinamen zu DOC_PO_FILES
in
po/doc/local.mk hinzufügt, die erzeugte Handbuchdatei
%D%/guix.xx.texi zu info_TEXINFOS
in doc/local.mk
hinzufügt und sowohl die erzeugte %D%/guix.xx.texi als auch
%D%/contributing.xx.texi zu TRANSLATED_INFO
auch wieder in
doc/local.mk hinzufügt.
documentation-cookbook
müssen
registriert werden, indem man deren Dateinamen zu
DOC_COOKBOOK_PO_FILES
in po/doc/local.mk hinzufügt, die
erzeugte Handbuchdatei %D%/guix-cookbook.xx.texi zu
info_TEXINFOS
in doc/local.mk hinzufügt und die erzeugte
%D%/guix-cookbook.xx.texi zu TRANSLATED_INFO
auch wieder in
doc/local.mk hinzufügt.
website
müssen zum Repository
guix-artwork
ins dortige Verzeichnis website/po/ hinzugefügt
werden. website/po/LINGUAS und website/po/ietf-tags.scm müssen
entsprechend aktualisiert werden (siehe website/i18n-howto.txt für
Details zum Prozess).
Nächste: Contributing to Guix’s Infrastructure, Vorige: Dokumentation schreiben, Nach oben: Mitwirken [Inhalt][Index]