Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Editor und Dokumentation übersetzen

Godot zielt darauf ab, die Spieleentwicklung allen zugänglich zu machen, auch Menschen, die möglicherweise kein Englisch sprechen oder sich damit nicht auskennen. Aus diesem Grund bemühen wir uns, dank der Übersetzungsbemühungen der Community die wichtigsten Ressourcen in vielen Sprachen verfügbar zu machen.

Die Ressourcen beinhalten:

  1. Die Benutzeroberfläche des Godot-Editors (ca. 15.000 Wörter).

  2. Die Online-Dokumentation (Editor-Handbuch und Tutorials, ca. 300.000 Wörter).

  3. Die Klassenreferenz ist sowohl online als auch im Editor verfügbar (ca. 200.000 Wörter).

Für die Verwaltung von Übersetzungen verwenden wir das GNU gettext-Dateiformat (PO-Dateien) und die webbasierte Open-Source-Plattform Weblate , welche die einfache Zusammenarbeit vieler Mitwirkender ermöglicht, um die Übersetzung für die verschiedenen Komponenten zu vervollständigen und auf dem neuesten Stand zu halten. Klicken Sie auf die fett gedruckten Verweise oben, um auf jede Ressource in Weblate zuzugreifen.

Diese Seite bietet einen Überblick über den allgemeinen Workflow einer Übersetzung in Weblate sowie einige ressourcenspezifische Anweisungen z.B. wie man mit einigen Schlüsselwörtern oder der Lokalisierung von Bildern umgeht.

Tipp

Das Übersetzen aller offiziellen Godot-Inhalte ist ein gewaltiges Unterfangen. Wir empfehlen daher, die oben aufgeführten Ressourcen zu priorisieren: Zuerst die Editor-Benutzeroberfläche, dann die Online-Dokumentation und schließlich die Klassenreferenz, wenn genügend Übersetzer vorhanden sind, um mit den Aktualisierungen Schritt zu halten.

Weblate für Übersetzungen verwenden

Während sich unsere Übersetzungen schließlich in den Git-Repositorys der Godot-Engine und ihrer Dokumentation befinden, werden alle Übersetzungsaktualisierungen über Weblate abgewickelt, sodass direkte Pull-Requests an die Git-Repositorys nicht akzeptiert werden. Übersetzungen werden von Maintainern manuell zwischen Weblate und den Godot-Repositorys synchronisiert.

Sie sollten sich daher auf Weblate registrieren, um zu Godots Übersetzungen beizutragen.

Navigieren Sie nach der Anmeldung zu der Godot-Ressource, zu der Sie beitragen möchten (auf dieser Seite verwenden wir Editor-Übersetzung als Beispiel), um die Liste aller Sprachen zu finden:

../../_images/l10n_01_language_list.png

Siehe auch

Weitere Informationen finden Sie in der Weblate-eigenen Dokumentation zum Übersetzungs-Workflow.

Hinzufügen einer neuer Sprache

Wenn Ihre Sprache bereits aufgeführt ist, klicken Sie auf den Namen, um auf die Übersicht zuzugreifen, und überspringen Sie den Rest dieses Abschnitts.

Wenn Ihre Sprache nicht aufgeführt ist, scrollen Sie zum Ende der Liste der Sprachen, klicken Sie auf den Button "Neue Übersetzung starten" und wählen Sie die Sprache aus, in die Sie übersetzen möchten:

../../_images/l10n_02_new_translation.png

Wichtig

Wenn Ihre Sprache in mehreren Ländern mit nur begrenzten regionalen Abweichungen gesprochen wird, sollten Sie sie mit ihrer generischen Variante (z.B. fr für Französisch) anstelle einer regionalen Variante (z.B. fr_FR für Französisch (Frankreich)) hinzufügen. fr_CA für Französisch (Kanada) oder fr_DZ für Französisch (Algerien)).

Godot muss eine große Menge an Inhalten übersetzen, daher sollte das Duplizieren der Arbeit für regionale Varianten nur durchgeführt werden, wenn die Sprachvariationen signifikant genug sind. Wenn eine Übersetzung für eine regionale Variante durchgeführt wird, ist sie außerdem nur automatisch verfügbar für Benutzer, die sich in dieser Region befinden (oder die ihre Systemsprache für diese Region konfiguriert haben).

Wenn regionale Abweichungen signifikant genug sind, um separate Übersetzungen zu rechtfertigen, empfehlen wir, sich nach Möglichkeit zunächst auf die Fertigstellung einer generischen Variante zu konzentrieren, dann die vollständig fertiggestellte Übersetzung für regionale Varianten zu duplizieren und die entsprechenden Änderungen vorzunehmen. Dies ist typischerweise eine gute Strategie für z.B: Spanisch (arbeiten Sie zuerst an es und duplizieren Sie es dann zu es_AR, es_ES, es_MX usw., falls erforderlich) oder Portugiesisch (pt_BR vs pt_PT).

Übersetzungsoberfläche

Sobald eine Sprache ausgewählt wurde, wird eine Übersicht über den Übersetzungsstatus angezeigt, einschließlich der Anzahl der noch zu übersetzenden oder zu überprüfenden Strings. Jedes Element kann angeklickt und zum Durchsuchen der entsprechenden Liste verwendet werden. Sie können auch auf den "Translate"-Button klicken, um mit der Liste der Strings zu beginnen, für die eine Aktion erforderlich ist.

../../_images/l10n_03_translation_overview.png

Nachdem Sie eine Liste mit dem Klick auf "Translate" ausgewählt haben, wird die Hauptübersetzungsoberfläche angezeigt, in der die gesamte Arbeit ausgeführt wird:

../../_images/l10n_04_translation_interface.png

Auf dieser Seite haben Sie:

  • Eine Toolbar, mit der Sie durch die Strings der aktuellen Liste blättern, zu einer anderen vordefinierten Liste wechseln oder eine benutzerdefinierte Suche durchführen können, usw. Es gibt auch einen "Zen"-Bearbeitungsmodus mit einer vereinfachten Oberfläche.

  • Der tatsächliche String, an dem Sie im Bereich "Translation" arbeiten. Standardmäßig sollte der englische Originalstring und ein Bearbeitungsfeld für Ihre Sprache vorhanden sein. Wenn Sie mit anderen Sprachen vertraut sind, können Sie diese in Ihren Benutzereinstellungen hinzufügen, um mehr Kontext für die Übersetzung zu erhalten. Wenn Sie mit dem Bearbeiten des aktuellen Strings fertig sind, klicken Sie auf "Save", um die Änderungen zu bestätigen und zum nächsten Eintrag zu wechseln. Alternativ können Sie den "Skip"-Button verwenden, um sie zu überspringen. Das Kontrollkästchen "Needs editing" bedeutet, dass der ursprüngliche String aktualisiert wurde. Die Übersetzung muss daher überprüft werden, um diese Änderungen zu berücksichtigen (im PO-Jargon handelt es sich um sogenannte "Fuzzy"-Strings). Solche Strings werden in der Übersetzung erst verwendet, wenn sie behoben sind.

  • Im unteren Bereich befinden sich verschiedene Tools, die bei der Übersetzung hilfreich sein können, z.B. der Kontext von Strings in der Umgebung (normalerweise aus demselben Editor-Tool oder derselben Dokumentationsseite, sodass möglicherweise ähnliche Begriffe verwendet werden), Kommentare von anderen Übersetzern, maschinelle Übersetzungen und eine Liste aller anderen vorhandenen Übersetzungen für diesen String.

  • Oben rechts zeigt das Glossar Begriffe, für die zuvor ein Eintrag hinzugefügt wurde und die im aktuellen String enthalten sind. Wenn Sie beispielsweise mit anderen Übersetzern beschlossen haben, eine bestimmte Übersetzung für den Begriff "Node" in Godot zu verwenden, können Sie diese dem Glossar hinzufügen, um sicherzustellen, dass andere Übersetzer dieselbe Konvention verwenden.

  • Das untere rechte Feld enthält Informationen zum Originalstring. Das relevanteste Element ist "source string location", der Sie mit dem ursprünglichen String auf GitHub verknüpft. Möglicherweise müssen Sie auf der Seite nach dem String suchen, um ihn und den umgebenden Kontext zu finden.

Originalinhalt suchen

PO-Dateien sind eine geordnete Liste von Originalstrings (msgid) und deren Übersetzung (msgstr). Standardmäßig zeigt Weblate den String in dieser Reihenfolge an. Es kann daher hilfreich sein zu verstehen, wie der Inhalt in den PO-Dateien organisiert ist, damit Sie den ursprünglichen Inhalt leichter finden und beim Übersetzen als Referenz verwenden können.

Wichtig

Es ist maßgeblich, beim Übersetzen den ursprünglichen Kontext als Referenz zu verwenden, da viele Wörter je nach Kontext mehrere mögliche Übersetzungen haben. Die Verwendung der falschen Übersetzung kann sich nachteilig auf den Benutzer auswirken und das Verständnis der Dinge schwerer machen, als wenn sie auf Englisch geblieben wären. Die Verwendung des Kontexts macht den Übersetzungsaufwand auch viel einfacher und angenehmer, da Sie direkt sehen können, ob die von Ihnen geschriebene Übersetzung im Kontext sinnvoll ist.

  • Die Übersetzungsvorlage der Editor-Benutzeroberfläche wird durch Parsen des gesamten C++ Quellcodes in alphabetischer Reihenfolge generiert, sodass alle in einer bestimmten Datei definierten Strings zusammengefasst werden. Wenn beispielsweise die "source string location" den Ort editor/code_editor.cpp angibt, wird der aktuelle String (und die in der Nähe befindlichen) in der Codedatei editor/code_editor.cpp definiert und bezieht sich damit auf die Code-Editoren in Godot (GDScript, Shader).

  • Die Übersetzungsvorlage der Online-Dokumentation wird aus den RST-Quelldateien in der Reihenfolge des Inhaltsverzeichnisses generiert, d.h. die ersten Textblöcke stammen beispielsweise von der ersten Seite der Dokumentation. Der empfohlene Workflow besteht daher darin, einen eindeutigen Textblock zu finden, der einer Seite entspricht, die Sie übersetzen möchten, und dann alle Textblöcke mit demselben Originaltext zu übersetzen, während Sie sie mit der Online-Version dieser Seite auf Englisch vergleichen. Ein Beispiel für den Ort eines Ausgangstextblocks könnte getting_started/step_by_step/nodes_and_scenes.rst für die Seite Nodes und Szenen sein.

  • Die Übersetzungsvorlage der Klassenreferenz wird aus den XML-Quelldateien in alphabetischer Reihenfolge generiert. Dies entspricht auch der Reihenfolge des Inhaltsverzeichnisses für die Online-Version. Sie können daher die Originalstrings suchen, die der Kurzbeschreibung einer bestimmten Klasse entspricht, um den ersten zu übersetzenden String zu finden. Alle anderen Beschreibungen dieser Klasse sollten in den nachfolgenden Strings auf Weblate enthalten sein. Beispielsweise hätten die Beschreibungen für die Klasse Node2D den Speicherort der Originalstrings doc/classes/Node2D.xml.

Ein praktisches Werkzeug, um bestimmte Seiten/Klassen zu finden, ist die erweiterte Suchfunktion von Weblate, insbesondere die Abfrage "Location strings" (die auch mit dem Token location: verwendet werden kann, z.B. location:nodes_and_scenes.rst):

../../_images/l10n_05_search_location.png ../../_images/l10n_06_browse_by_location.png

Bemerkung

Wenn ein bestimmter Textblock in mehreren Originaltexten verwendet wird, werden sie alle zu einem zusammengefügt. Zum Beispiel würde die obige Abfrage location:nodes_and_scenes.rst zuerst auf dem Ausgangstextblock "Introduction" landen, die in Dutzenden von Seiten verwendet wird, einschließlich einiger, die in der Vorlage vor nodes_and_scenes.rst stehen. Ein Klick auf den "Next" Button bringt uns dann zu dem oben gezeigten "Scene and nodes" Titelstring. Es kann also vorkommen, dass sich ein bestimmter Absatz- oder Abschnittstitel nicht an der Stelle befindet, an der man ihn beim Lesen der Online-Version einer Seite erwarten würde.

Respektieren der Markup-Syntax

Jede Übersetzungsressource stammt aus einem anderen Quellcode-Format. Es ist wichtig, einige Grundkenntnisse der Markup-Sprache zu haben, die für jede Ressource verwendet wird, um Syntaxfehler in Ihren Übersetzungen zu vermeiden.

Editor-Benutzeroberfläche (C++)

Die Editorübersetzungen stammen aus C++-Strings und können Folgendes verwenden:

  • C-Formatbezeichner wie z.B. %s (ein String) oder %d (eine Zahl). Diese Bezeichner werden zur Laufzeit durch Inhalt ersetzt und sollten erhalten bleiben und in Ihrer Übersetzung eingefügt werden, wo dies notwendig ist, damit sie nach dem Ersetzen noch aussagekräftig sind. Möglicherweise müssen Sie sich auf die Stelle der Originalstrings beziehen, um zu verstehen, welche Art von Inhalt ersetzt wird, wenn er sich nicht eindeutig aus dem Satz ergibt. Beispiel (%s wird durch einen Dateinamen oder Pfad ersetzt):

    # PO file:
    "There is no '%s' file."
    
    # Weblate:
    There is no '%s' file.
    
  • C Escape-Zeichen wie z.B. \n (Zeilenumbruch) oder \t (Tabulator). Im Weblate-Editor werden die \n-Zeichen durch (Zeilenumbruch) und \t durch ersetzt. Tabulatoren werden nicht oft verwendet, aber Sie sollten darauf achten, Zeilenumbrüche in der gleichen Weise wie den englischen Originalstring zu verwenden (Weblate gibt eine Warnung aus, wenn man das nicht tut). Zeilenumbrüche können manchmal für vertikale Abstände oder für den manuellen Umbruch langer Zeilen verwendet werden, die ansonsten zu lang wären, insbesondere in der Übersetzung des Editors). Beispiel:

    # PO file:
    "Scene '%s' is currently being edited.\n"
    "Changes will only take effect when reloaded."
    
    # Weblate:
    Scene '%s' is currently being edited.↵
    Changes will only take effect when reloaded.
    

Bemerkung

Es kommt nur auf die logische Reihenfolge der Zeichen an, im Text von rechts nach links können Formatangaben als s% dargestellt werden.

Online-Dokumentation (RST)

Die Dokumentationsübersetzungen stammen aus reStructuredText (RST)-Dateien, die auch ihre eigene Markup-Syntax verwenden, um Text zu formatieren, interne und externe Links zu erstellen usw. Hier einige Beispiele:

# "development" is styled bold.
# "Have a look here" is a link pointing to https://docs.godotengine.org/en/latest.
# You should translate "Have a look here", but not the URL, unless there is
# a matching URL for the same content in your language.
# Note: The `, <, >, and _ characters all have a meaning in the hyperlink
# syntax and should be preserved.

Looking for the documentation of the current **development** branch?
`Have a look here <https://docs.godotengine.org/en/latest>`_.

# "|supported|" is an inline reference to an image and should stay unchanged.
# "master" uses the markup for inline code, and will be styled as such.
# Note: Inline code in RST uses 2 backticks on each side, unlike Markdown.
# Single backticks are used for hyperlinks.

|supported| Backwards-compatible new features (backported from the ``master``
branch) as well as bug, security, and platform support fixes.

# The :ref: Sphinx "role" is used for internal references to other pages of
# the documentation.
# It can be used with only the reference name of a page (which should not be
# changed), in which case the title of that page will be displayed:

See :ref:`doc_ways_to_contribute`.

# Or it can be used with an optional custom title, which should thus be translated:

See :ref:`how to contribute <doc_ways_to_contribute>`.

# You may encounter other Sphinx roles, such as :kbd: used for shortcut keys.
# You can translate the content between backticks to match the usual key names,
# if it's different from the English one.

Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/Linux
or :kbd:`Cmd + S` on macOS.

Siehe auch

Siehe den reStructured Text primer von Sphinx für einen schnellen Überblick über die Markup-Sprache, die Sie in Originaltexten finden können. Sie können insbesondere auf das Inline-Markup (fett, kursiv, Inline-Code) und das interne und externe Hyperlink-Markup stoßen.

Klassenreferenz (BBCode)

Die Klassenreferenz wird im Godot-Hauptrepository mithilfe von XML-Dateien und mit einem BBCode-ähnlichen Markup für das Styling und interne Referenzen dokumentiert.

Einige der verwendeten Tags stammen aus dem ursprünglichen BBCode (z.B. [b]Bold[/b] und [i]Italics[/i]), während andere Godot-spezifisch sind und für fortgeschrittene Features wie Inline-Code verwendet werden (e.g. [code]true[/code]), Verknüpfungen zu einer anderen Klasse (z.B. [Node2D]) oder zu einer Property in einer bestimmten Klasse (z.B. [member Node2D.position]) oder für mehrzeilige Codeblöcke. Beispiel:

Returns a color according to the standardized [code]name[/code] with [code]alpha[/code] ranging from 0 to 1.
[codeblock]
red = ColorN("red", 1)
[/codeblock]
Supported color names are the same as the constants defined in [Color].

In dem obigen Beispiel sollten [code]name[/code], [code]alpha[/code], und [Color] nicht übersetzt werden, da sie sich jeweils auf Argumentnamen und eine Klasse der Godot-API beziehen. In ähnlicher Weise sollte der Inhalt des [codeblock] nicht übersetzt werden, da ColorN eine Funktion der Godot-API ist und "red" eine der benannten Farben ist, die sie unterstützt. Man kann höchstens den Namen der Variablen übersetzen, die das Ergebnis enthält (red = ...).

Beachten Sie auch, dass im XML jede Zeile ein Absatz ist, so dass Sie keine Zeilenumbrüche hinzufügen sollten, wenn diese nicht Teil der Originalübersetzung sind.

Siehe auch

Siehe unsere Dokumentation für Klassenreferenz-Autoren für die Liste der BBCode-ähnlichen Tags, die in der Klassenreferenz verwendet werden.

Offline Übersetzen und Testen

Während wir empfehlen, die Weblate-Oberfläche zum Schreiben von Übersetzungen zu verwenden, haben Sie auch die Möglichkeit, die PO-Datei lokal herunterzuladen, um sie mit Ihrem bevorzugten PO-Bearbeitungsprogramm wie Poedit oder Lokalize zu übersetzen.

Um die PO-Datei lokal herunterzuladen, navigieren Sie zur Übersetzungsübersicht für Ihre Sprache und wählen Sie den ersten Eintrag im "Files"-Menü aus:

../../_images/l10n_07_download_po_file.png

Wenn Sie mit einer Reihe von Änderungen fertig sind, verwenden Sie das Element "Upload translation" in demselben Menü und wählen Sie Ihre Datei aus. Wählen Sie "Add as translation" für den Datei-Upload-Modus.

Bemerkung

Wenn zwischen dem Herunterladen der PO-Datei und dem Hochladen der bearbeiteten Version viel Zeit vergangen ist, besteht die Gefahr, dass die von anderen Mitwirkenden verfassten Übersetzungen in der Zwischenzeit überschrieben werden. Aus diesem Grund empfehlen wir, die Online-Oberfläche zu verwenden, damit Sie immer an der neuesten Version arbeiten.

Wenn Sie Änderungen lokal testen möchten (insbesondere für die Editorübersetzung), können Sie die heruntergeladene PO-Datei verwenden und Godot aus dem Quellcode kompilieren.

Benennen Sie die PO-Datei für die Editorübersetzung in <lang>.po um (z.B. eo.po für Esperanto) und legen Sie sie im Ordner editor/translations/ ab (GitHub).

Auf die gleiche Weise können Sie auch Klassenreferenzänderungen testen, indem Sie die PO-Datei auf ähnliche Weise umbenennen und im doc/translations/-Ordner (GitHub) ablegen.

Dokumentations-Bilder übersetzen

Die Online-Dokumentation enthält viele Bilder, bei denen es sich um Screenshots des Godot-Editors, selbst erstellte Diagramme oder andere visuelle Inhalte handeln kann. Einige der Bilder enthalten Text und könnten daher für die Lokalisierung in Ihrer Sprache relevant sein.

Dann gibt es noch das offizielle Godot I18N-Repository. wo Sie einsehen können, wann die letzte Synchronisation stattgefunden hat.

Bemerkung

Der Workflow ist nicht der einfachste und erfordert einige Git-Kenntnisse. Wir planen, an einem vereinfachten Web-Tool zu arbeiten, mit dem die Bildlokalisierung auf bequeme Weise verwaltet und diese Schritte abstrahiert werden können.

Um ein Bild zu übersetzen, sollten Sie es zuerst in der englischen Originaldokumentation suchen. Durchsuchen Sie dazu die entsprechende Seite in den Dokumenten, z.B. Ein erster Blick auf den Godot-Editor. Klicken Sie oben rechts auf den Link "Edit on GitHub":

../../_images/l10n_08_edit_on_github.png

Klicken Sie auf GitHub auf das Bild, das Sie übersetzen möchten. Klicken Sie gegebenenfalls auf "Download", um es lokal herunterzuladen und mit einem Zeichenprogramm zu bearbeiten. Notieren Sie sich den vollständigen Pfad zum Bild, da dieser weiter unten benötigt wird (hier getting_started/step_by_step/img/project_manager_first_open.png).

../../_images/l10n_09_path_to_image.png

Erstellen Sie Ihre lokalisierte Version des Bildes, indem Sie entweder die englische bearbeiten oder einen Screenshot des Editors in Ihrer Sprache erstellen, sofern es sich um einen Editor-Screenshot handelt. Einige Bilder verfügen möglicherweise auch über Quelldateien im SVG-Format, sodass Sie den img/ Ordner durchsuchen können, der sie enthält, um dies zu überprüfen.

Benennen Sie Ihr lokalisiertes Bild wie das Original, jedoch mit dem vor der Erweiterung hinzugefügten Sprachcode, z.B. project_manager_first_open.png würde für die deutsche Lokalisierung zu project_manager_first_open.de.png.

Erstellen Sie schließlich auf godot-docs-l10n dieselbe Ordnerstruktur wie für das Originalbild im Unterordner images (GitHub) und platzieren Sie Ihr übersetztes Bild dort. In unserem Beispiel sollte das Endergebnis images/getting_started/step_by_step/img/project_manager_first_open.de.png sein.

Wiederholen Sie diesen Vorgang für andere Bilder und erstellen einen Pull Request.