Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576

Die Seite wird erstellt Arthur Krieger
 
WEITER LESEN
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen:
                                          Eine Anleitung, von
                                               moskys#0576
                                          moskys
¡

Nennen Sie mich Moskys. Wie Sie sicherlich wissen, wenn Sie zu diesem Leitfaden gekommen sind, ist Ren'Py ein freies
und Open-Source-Spiel
Engine (für die Erstellung von Visual Novels, im Allgemeinen), die zu einer der beliebtesten Software geworden ist, die
von Hobbyentwicklern zur Entwicklung ihrer Spieleprojekte. Basierend auf der Programmiersprache Python, seine
Einfachheit und Flexibilität ist ein großer Vorteil, da es erlaubt, mehr als akzeptable Ergebnisse zu erzielen, ohne
vorherige Programmierkenntnisse. Und eine der vielen Funktionen, die Ren'Py beinhaltet, ist die Erleichterung der
Übersetzung der mit diesem Programm erstellten Spiele.
Also, nach fast drei Jahren des Spielens und des manuellen Übersetzens ins Spanische (und für den PC) mehrerer Spiele
von
vielfältigen Komplexität habe ich mich ermutigt, diese Anleitung zu schreiben, um den Prozess für jeden zu erklären, der
zu übersetzen beginnen oder neugierig genug sind, um zu wissen, womit ich meine Freizeit verbringe.
1 EINLEITUNG
         1 .1.- Unter der Haube eines Ren'Py-Spiels
         1 .2.- Drei Grundbegriffe und zwei Gebote
         1 .3.- Wie (denke ich) funktioniert Ren'Py? Das dritte Gebot
         1 .4.- UnRen und .rpa Archive
         1 .4.- Ren'Py SDK

2 .- ÜBERSETZEN WIR!
         2 .1.- Erzeugen von Übersetzungsdateien (und Lernen des vierten Gebots)
         2 .2 - Die zwei Übersetzungsfunktionen (und noch ein Gebot)
         2 .3.- Helfen und/oder Austauschen des Extraktors
         2 .4.- Die Option Sprachwechsel
         2 .5.- Spiel-Updates übersetzen

3 .- WARUM ES NICHT KLAPPT
         3 .1.- Erkennung von Bugs und Fehlern
         3 .2.- Zeilen mit zu viel Text
         3 .3.- Schriftarten, die keine Sonderzeichen zulassen
         3 .4.- Bilder übersetzen
         3 .5.- Textvariablen übersetzen
         3 .6.- Polisemy: Unterschiedliche Übersetzungen für gleiche Wörter

4 .- DER ÜBERSETZUNGSPATCH

                               WICHTIGE (UND KOSTENLOSE) WERKZEUGE - Versionen ab 31-Dez-2020

            Ren'Py SDK 7.3.5. -> https://www.renpy.org/latest.html

            UnRen v.09.dev -> https://f95zone.to/threads/unren-bat-v0-8-rpa-extractor-rpyc-decompiler-
            console-developer-menu-enabler.3083/ (verweist auf ein Forum mit nicht jugendfreiem Inhalt)

            Text-Editor:

                  o Notepad++ 7.9.1 -> https://notepad-plus-plus.org/downloads/

                  o Atom -> https://atom.io/
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys               Diskord: moskys#0576                       v1.01 - jan2021

1 EINLEITUNG

1 .1.- Unter der Haube eines Ren'Py-Spiels

Es ist offensichtlich, aber um ein Spiel zu übersetzen, müssen Sie zuerst ein Spiel haben. Suchen Sie also nach einem Ren'Py-Spiel, das
die Sie heruntergeladen haben, und werfen Sie einen Blick in dessen Stammordner. Sie werden etwas Ähnliches wie das hier sehen:

Normalerweise führen wir einfach die ausführbare Datei aus und spielen. Aber jetzt schauen wir uns die Baumunterordner an, die wir
dort sehen,
in dem die Magie passiert. Grob gesagt, finden wir im Ordner "renpy" die Dateien mit
die vorprogrammierten Funktionen, und im "lib"-Ordner haben wir alle technischen Dateien, die die Spiele
auf den verschiedenen Betriebssystemen laufen. Mit diesen beiden Ordnern können wir das Spiel spielen, ohne etwas herunterzuladen
ein anderes spezifisches Programm dafür; wir könnten sagen, dass diese Ordner Ren'Py-Spiele in selbstausführende Programme
Das Spiel selbst befindet sich im Ordner "game". Keine Panik, dieses hier ist besonders komplex:
verwandeln.

Es gibt mehrere Unterordner, die wir für den Moment übersehen können, um uns auf einzelne Dateien zu konzentrieren. Beim
Verpacken ihrer
Spiele, empfiehlt Ren'Py den Entwicklern, alle Dateien offen zu legen, wie es die Entwickler von "What a Legend!" tun. Dies
ermöglicht es uns, eine ganze Reihe von scheinbar geklonten Dateien zu sehen, einige mit der Erweiterung .rpy und andere mit der
Erweiterung .rpyc                                            |Top|
Erweiterung.
                                                                                                                                     2
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                          Diskord: moskys#0576                       v1.01 - jan2021
moskys
1 .2.- Drei Grundbegriffe und zwei Gebote

Diese Dateien im Ordner "game" sind die Skripte. In diesen Skripten fügen die Entwickler alle für das Spiel relevanten
Programmiercode und Texte. Dazu schreiben sie einfach das, was sie schreiben müssen, in einen Texteditor und speichern
die Datei mit einer Ren'Py-spezifischen Erweiterung namens .rpy.

Verwenden Sie also ein einfaches Programm wie Windows Notepad (oder vorzugsweise ein besseres, wie Atom oder Notepad++, um
um zwei freie und einfache zu nennen, die in der Programmierung verwendet werden), können wir diese .rpy-Dateien öffnen und
sehen, was das Erstellen eines
Ren'Py Spiel ist. Wenn wir "What a Legend!" als Beispiel verwenden, öffnen wir die Datei mit dem Namen "convo_oc.rpy",
In den ersten Zeilen können wir dies erkennen:

Alles, was rechts vom #-Symbol steht, sind Kommentare, die nicht im Spiel erscheinen, die aber von den Entwicklern verwendet
werden, um
sich durch ihren Code führen. Später werden wir sehen, wie nützlich dieses Symbol für Übersetzer sein kann.
In Zeile 3 sehen wir ein Wort, label, das von Bedeutung sein wird. Labels sind Teile des Skripts. Die Größe
dieser Abschnitte hängt vom Spieleentwickler ab, aber sie entsprechen im Allgemeinen einer bestimmten Szene. In dieser
Fall entspricht dieses Label einer Konversation, die auf dem Bildschirm erscheint, wenn der Spieler eine Aktion ausführt
die es aktiviert. Aufgrund der Python-Sprache ist alles, was in dieser Szene passiert, mit einer Einrückung kodiert.

             Das erste Gebot von Ren'Py: Sie werden immer Einrückungen respektieren und NIEMALS
             markieren Sie sie mit Tab, aber mit der Leertaste (normalerweise 4 Leerzeichen). Wenn Ren'Py eine
             Tabulator oder eine falsche Einrückung irgendwo in den Skripten (einschließlich Übersetzung
             Dateien) wird das Spiel nicht gestartet.

Wenn wir im Skript nach unten scrollen, sehen wir innerhalb desselben "convo_gate"-Labels mehrere Funktionen, die zeigen
und Bilder ausblenden und bestimmen, welcher Teil des Gesprächs angezeigt wird, basierend auf dem
Variablen, die von Spielern während ihres Durchspielens ausgelöst werden. Außerdem können wir einige zitierte Sätze sehen: Diese sind
die Dialogzeilen, die auf dem Bildschirm erscheinen werden. Diese zitierten Sätze sind diejenigen, die wir übersetzen müssen,
und sie werden Strings oder Textstrings genannt.

             Ren'Py's zweites Gebot: Sie werden immer Anführungszeichen schließen. Nicht geschlossene Anführungszeichen
             (oder ungeöffnete Anführungszeichen) verhindern, dass das Spiel gestartet wird.

                                                                    |Top|

                                                                                                                                   3
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                        Diskord: moskys#0576                       v1.01 - jan2021

1 .3.- Wie (denke ich) funktioniert Ren'Py? Das dritte Gebot

In der Annahme, dass ich kein IT-Experte bin und es sehr wahrscheinlich ist, dass ich etwas Dummes sagen werde, werde ich versuchen, sehr zu erklären
schnell, was passiert, wenn wir ein Ren'Py-Spiel laufen lassen.

Erinnern Sie sich an die Liste der geklonten Dateien innerhalb des Ordners "game"? Nun, sie sind nicht gerade Klone. Ren'Py
führt die .rpyc-Dateien aus, die eine Zusammenstellung der bearbeitbaren Dateien sind, die mit der Erweiterung .rpy gespeichert
wurden. Diese
Die Kompilierung erfolgt zum ersten Mal, wenn Entwickler das Spiel in ihrer Entwicklungsumgebung öffnen.
Es wird ein AST (abstrakter Syntaxbaum) auf der Basis des zu diesem Zeitpunkt verfügbaren Inhalts generiert und dieser AST wird
die Basis für alles sein, was später in aufeinanderfolgenden Kompilierungen hinzugefügt wird. Nach seinen Algorithmen,
Ren'Py weist jedem Programmierelement der .rpy-Dateien eine Kennung zu, basierend auf seiner Position in
das Skript und seine eigene Art (Text, Variable, Funktion usw.), und mit diesen Identifikationen erstellt es .rpyc
Dateien mit demselben Namen, die während des Spiels gelesen werden.
Jedes Mal, wenn das Spiel gestartet wird, sucht Ren'Py nach .rpy-Dateien und vergleicht sie, falls vorhanden, mit ihren
bzw. .rpyc und sucht nach den Identifikationen, die bei der ersten Kompilierung erstellt wurden. Wenn es irgendwelche
Änderungen, die seit der letzten Kompilierung der .rpyc-Datei an der .rpy-Datei vorgenommen wurden, erkennt Ren'Py sowohl
die unveränderten Elemente und diejenigen, die verschoben wurden, respektiert es ihre vorherigen Identifizierungen
und wird die .rpyc-Datei mit den Änderungen aktualisieren. Stark vereinfachend stellen wir uns vor, dass Zeile Nummer 3 der .rpy
Datei wird zunächst so kompiliert, dass diese Zeile in der .rpyc-Datei mit einer "3" gekennzeichnet wird. Wenn in Zukunft
Versionen der .rpy-Datei wird diese Zeile nicht geändert, sondern wird zu Zeile Nummer 7, sie bleibt als "3" in der .rpyc
Datei. Obwohl die endgültige .rpy-Datei also kaum noch Ähnlichkeit mit der ersten, von der
Spieleentwickler, wird die entsprechende .rpyc-Datei immer nach den Beziehungen kompiliert, die
im ersten entstandenen AST erstellt, da einige dieser ursprünglichen Elemente noch vorhanden sind.

Wenn wir sie irgendwann löschen, erzeugt Ren'Py neue .rpyc-Dateien, aber unter Verwendung der aktuellen Version von
die .rpy-Skripte. Und das bedeutet, dass die Beziehungen und Identifikationen, die nun im AST erstellt werden
wird nicht mit den Originaldateien übereinstimmen, da sie von einem .rpy-Skript erstellt werden, das wie
etwas wie die erste. Nehmen wir das absurde Beispiel von vorhin: Zeile 7 der .rpy-Datei, die "3" genannt wurde in
die gelöschte .rpyc, weil sie von früheren Versionen übernommen wurde, würde nun mit einem
“ 7", da die AST von Grund auf neu generiert wird. Das Spiel wird gestartet und neue Spiele sollten davon nicht betroffen sein,
aber Funktionen, die die AST-Referenzen verwenden, wie z. B. das Laden von Spielen, die in früheren Versionen gespeichert wurden,
halten möglicherweise
richtig funktionieren. Und in bestimmten Fällen, die wir später noch sehen werden, kann es auch bei Übersetzungen zu Problemen
kommen.
                Das dritte Gebot von Ren'Py: Löschen Sie keine .rpyc-Dateien aus dem Originalspiel, da dies
                kann bei Spielern unbeabsichtigte Probleme hervorrufen.
                                                                         |Top|
                                                                                                                                                4
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                      Diskord: moskys#0576                       v1.01 - jan2021
moskys
1.4.- UnRen und .rpa Archive

Es ist möglich, dass Sie beim Öffnen des Ordners "Spiel" nichts von all dem gesehen haben, was ich gerade
erwähnt. Denn wenn es darum geht, das Spiel für die Veröffentlichung zu bauen, bietet Ren'Py den Entwicklern mehrere
Optionen. Die empfohlene ist, alle einzelnen Skripte sowohl im .rpy- als auch im .rpyc-Format einzubinden, da wir
im Beispiel "What a Legend!" gesehen haben, aber das ist nur eine Empfehlung. Nur als Ren'Py-Spiel
seine .rpyc-Skripte benötigt, um zu funktionieren, fügen einige Entwickler nur die .rpyc-Skripte bei. Auf diese Weise hat das Spiel eine
etwas kleiner und die Spieler haben keinen direkten Zugriff auf den Code des Spiels (was vielleicht ein wichtigerer
Grund).

Und es gibt noch eine andere Möglichkeit (eine recht häufige, würde ich sagen), wie wir herausfinden können, dass im "Spiel"-Ordner
es gibt keine Skripte mit den Erweiterungen .rpy oder .rpyc, da der Entwickler eine andere angegebene Option gewählt hat
von Ren'Py, um das Spiel zu erstellen: das Komprimieren der Skripte und anderer Dateien (wie Bilder) in eine .rpa-Datei. Das
So könnten wir anstelle einer Liste von .rpy- und .rpyc-Dateien so etwas im "Spiel"-Ordner haben:

Zunächst einmal können wir bestätigen, dass dies, wie Sie wahrscheinlich bereits wissen, kein Problem ist. Das Spiel wird laufen
perfekt wie es ist, aber um es zu übersetzen, müssen wir einen zusätzlichen Umweg machen, da wir die Skripte benötigen
im .rpy-Format. Glücklicherweise gibt es mehrere Tools, die die notwendigen Aufgaben dafür erledigen, ohne dass wir
um die Sprache Python zu lernen. Für seine Einfachheit ist UnRen meiner Meinung nach am handlichsten. LINK (Achtung: Link zu einem
Forum mit vielen nicht jugendfreien Inhalten)

Sobald UnRen heruntergeladen ist, entpacken wir es und fügen es in den Stammordner des Spiels, das uns interessiert, ein, und zwar an
der Stelle dieselbe Ebene wie die ausführbare Datei des Spiels. Ich denke, es ist einfacher zu verstehen, wenn Sie es sehen:

                                                                                                                                     5
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                      Diskord: moskys#0576                      v1.01 - jan2021
moskys
Dann brauchen wir es nur noch zu starten und auszuwählen, was wir tun wollen. Dies ist der Startbildschirm von UnRen:

Wie Sie sehen können, werden wir hier nur die Tastatur verwenden. Wir müssen nur die Taste drücken, die der
was wir tun wollen. Option 1) "entpackt" die .rpa-Dateien und extrahiert den gesamten Inhalt in den Ordner "Spiel". Sie
kann es sein, dass sich in dieser .rpa-Datei nur Skripte mit der Endung .rpyc befanden, so dass nach Beendigung
dass Option 1), müssten wir UnRen bitten, Option 2) auszuführen, die darin besteht, die .rpyc zu dekompilieren
Dateien, um einige Skripte im .rpy-Format zu erstellen, die wir bereits für unsere Übersetzung verwenden konnten.

Wir können einfach die Option 9) wählen, die in einem einzigen Schritt das Gleiche wie 1) und 2) tut und zusätzlich die
um die Konsole des Spiels und das Entwicklermenü zu öffnen (das nützlich ist, um Variablen zu untersuchen und zu ändern,
um auf bestimmte Teile des Skripts zuzugreifen, und auch, um das Spiel automatisch neu zu laden, wenn wir eine Änderung einführen
in der Übersetzung), sowie andere Optionen, die der Entwickler des Spiels möglicherweise deaktiviert hat.

Nun, wir lassen UnRen seine Arbeit machen und am Ende, wenn wir in den "Spiel"-Ordner zurückgehen, werden wir sehen, dass, wo
vorher gab es nur eine Datei mit der Endung .rpa, jetzt erscheinen die Skripte, die komprimiert wurden
im Inneren.

Jetzt könnten wir mit dem Übersetzen beginnen. Aber lassen Sie mich zunächst einen Absatz verwenden, um zu erklären,
was mit
das Spiel. Jetzt befinden sich im Ordner "game" Skripte mit der Erweiterung .rpy, Skripte mit der Erweiterung .rpyc
und zusätzlich befinden sich in der Datei "archive.rpa" genau die gleichen .rpyc-Skripte (und vielleicht sogar
die .rpy-Dateien). Jetzt haben wir also geklonte Dateien.                                                           6
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                               Diskord: moskys#0576                              v1.01 - jan2021
moskys

Glücklicherweise ist Ren'Py so konzipiert, dass es diese Probleme des Klonens auf einfache Weise löst: Wenn es zwei Skripte mit dem
gleichen Namen, wird die aktuellste ausgeführt. Und in diesem Fall sind die aktuellsten diejenigen, die wir gerade
mit UnRen extrahiert. Daher könnten wir die Datei "archive.rpa" löschen (und es wäre sogar
empfohlen, solange wir eine Möglichkeit haben, sie später wiederherzustellen, nur für den Fall).

Und noch eine Klarstellung, bevor Sie fortfahren. Wenn die .rpa-Datei sowohl die .rpy- als auch die .rpyc-Skripte enthält,
die, die wir jetzt im "Spiel"-Ordner sehen, sind genau die gleichen, die vom Spieleentwickler stammen
Computer, da sie gerade von UnRen extrahiert worden sind. Wenn aber in der .rpa-Datei nur Skripte mit .rpyc waren
Erweiterung sind die .rpy-Skripte, die wir jetzt im Ordner "game" haben, nur eine Annäherung, die von
UnRen basiert auf dem identifizierten Algorithmus, der zum Kompilieren der .rpyc-Skripte verwendet wird. Sie sind also möglicherweise nicht genau wie
die ursprünglichen .rpy-Skripte: Sie sind nur geeignet, um die aktuellen .rpyc-Skripte zu erstellen. Zum Beispiel, alle Kommentare
die sich der Entwickler nach einem #-Symbol notiert hätte, gehen verloren, da sie nie einkompiliert werden
die .rpyc-Skripte und logischerweise kann UnRen, das nur die .rpyc's liest, nicht erkennen, ob es irgendwelche Kommentare in den
Original-.rpy-Dateien.
                                                                        |Top|

1 .4.- Ren'Py SDK

Wie wir gesehen haben, laufen die Spiele von Ren'Py, ohne dass eine zusätzliche Software installiert werden muss, um sie zu lesen. Sie sind selbst
ausführbar und erlauben uns auch, ihre Skripte mit einem einfachen Texteditor zu modifizieren. Logischerweise muss jedoch zum Erstellen von
Sie benötigen eine ganz bestimmte Software.

Ren'Py SDK ist die Anwendung, die es uns ermöglicht, Ren'Py Spiele zu erstellen - und auch deren Übersetzungen. Also die erste
Schritt, um ein beliebiges Ren'Py-Spiel zu übersetzen, ist es, es herunterzuladen. Es ist kostenlos, sauber und voll vertrauenswürdig. LINK

Sobald Sie es heruntergeladen und auf Ihren Computer extrahiert haben, öffnen Sie den Ordner und Sie werden etwas sehen wie
dies:

Das heißt, eine sehr ähnliche Struktur wie bei Spielen, mit mehreren Unterordnern und einer ausführbaren Datei. Unter den
Unterordner haben wir "the_question" und "tutorial", die zwei Tutorials sind, um zu lernen, wie man Ren'Py benutzt. Es
Es schadet nicht, einen Blick auf sie zu werfen, aber sie tragen nicht viel zu den Übersetzungen bei.

Wir müssen nur die ausführbare Datei mit dem Namen "renpy" ausführen und können mit der Arbeit beginnen. Nach dem Einstellen
einiger Parameter wird das
Hauptbildschirm erscheint, normalerweise in Englisch. Ändern wir also zunächst die Sprache der App in unsere eigene Sprache.
                                                                                                                                                     7
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von            Diskord: moskys#0576                 v1.01 - jan2021
moskys

                                                                  Zuerst müssen wir in den "Voreinstellungen" auf die
                                                                  unten rechts im Fenster.

Unter der Bezeichnung "Sprache", auf der rechten
Seite
dieses "Voreinstellungen"-Bildschirms sehen wir eine
Liste
der verfügbaren Sprachen. Ren'Py SDK kann sein
in all diesen Sprachen laufen, also müssen wir nur
suchen wir nach unserem Gewünschten. Sobald wir
klicken
darauf, ändert sich die Sprache des Bildschirms.

                                                                   Jetzt haben wir die Software in unserem
                                                                   Sprache (Spanisch, in meinem Fall) und wir werden
                                                                   nicht
                                                                   Sie müssen es nie wieder ändern. Das eingekreiste
                                                                   Option, genannt "Projektordner", ist der
                                                                   Verzeichnis, in dem Ren'Py SDK gespeichert wird
                                                                   und
                                                                   Suche nach Spielen. Hier müssen wir wählen
                                                                   das Verzeichnis, in dem der Stammordner des
                                                                   Spiel, das wir übersetzen wollen, befindet. Das
                                                                   ist, wenn Sie "What a Legend!" in
                                                                   C/Dokumente und wählen Sie dann C/Dokumente.
                                                                   Klicken Sie auf "Zurück" und alle Spiele in diesem
                                                                   Ordner
                                                                   erscheint in der Liste "Projekte", zusätzlich
                                                       |Top|       zu den beiden Tutorials, die in der
                                                                   Ren'Py SDK.

                                                                                                                 8
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                               Diskord: moskys#0576                           v1.01 - jan2021
moskys
2.- ÜBERSETZEN WIR!

Entweder weil der Entwickler es uns leicht gemacht hat, oder weil wir uns den Weg dorthin erkämpft haben, die
Wichtig ist, dass wir an diesem Punkt unser Spiel mit seinen .rpy-Skripten vollständig freigelegt haben und bereit sind, die
übersetzt. Aber, unglücklicherweise oder nicht, Ren'Py übersetzt nichts, es hilft nur, die
übersetzbare Texte und lässt die Übersetzungen dort erscheinen, wo sie hingehören. Ren'Py SDK generiert die Skripte
die wir zum Erstellen der Übersetzung verwenden werden, mit allen notwendigen Befehlen; allerdings ist es schwierig, sie vollständig zum
alle übersetzbaren Texte zu extrahieren, ist nicht immer so einfach wie ein Klick auf eine Schaltfläche, und manchmal müssen wir
eine tiefgehende Bearbeitung der Original-Skripte vornehmen. Aber da wir schon so weit gekommen sind, werden wir auf das klicken
Taste, die Sie sicher schon mit gierigen Augen betrachten: Übersetzungen generieren.
                                                                        |Top|

2 .1.- Erzeugen von Übersetzungsdateien (und Lernen des vierten Gebots)

Nachdem Sie das Spiel ausgewählt haben, das wir übersetzen wollen (es wird im Abschnitt "Projekte" hervorgehoben angezeigt), klicken Sie auf
auf die Schaltfläche "Übersetzungen generieren" auf der rechten Seite des Bildschirms.

In das Feld "Sprache" müssen wir die
Sprache, in die wir das Spiel übersetzen wollen.
Es ist nur eine interne Identifikation, so dass wir
schreiben, was immer wir wollen (beachten Sie, dass keine speziellen
Zeichen sind erlaubt, wie z. B. ñ oder akzentuierte
Vokale). Das Wichtigste ist zu
sich an das zu erinnern, was wir hier geschrieben haben und
immer an Ren'Py's Vierte denken
Gebot:

  Das vierte Gebot von Ren'Py: Für
  Ren'Py, ein Großbuchstabe ist nicht gleich ein
  Kleinbuchstaben, niemals, unter keinen
  Umstand.

                                                                                                                                               9
Ren'Py Spiele übersetzen: Eine Anleitung, von - moskys moskys#0576
Ren'Py Spiele übersetzen: ein Leitfaden, von                              Diskord: moskys#0576                             v1.01 - jan2021
moskys
So können Sie spanisch, spanish, espanol, französisch, french, francaise, ship, yellow oder Monkey schreiben. Was auch immer Sie
wollen. Aber natürlich ist es ratsam, ein verständliches Wort zu verwenden. Und, wie gesagt, das Wichtigste ist
um sich zu erinnern, was Sie dort geschrieben haben und wie Sie es geschrieben haben. Ich benutze zum Beispiel immer das Wort
" Spanisch", mit einem großen "S", und das werden Sie von nun an in den angegebenen Beispielen sehen.

Dann gibt es mehrere Optionen, aber die einzige, die für uns von Bedeutung ist, ist diejenige, die lautet "Leere generieren
Zeichenketten für Übersetzungen" (oder was auch immer in Ihrer Sprache gesagt wird). Hier ist, wie fast immer, alles eine Frage von
schmeckt. Beim Übersetzen werden wir immer eine sichtbare Linie mit dem Originaltext als Leitfaden haben, aber die Idee ist
dass, wenn wir diese Option wählen, die Übersetzungsskripte mit ein paar Leerzeilen generiert werden, die wir dann
direkt unsere Übersetzung auf sie schreiben. Wenn wir es nicht auswählen, werden die Skripte mit diesen Zeilen generiert
in der Originalsprache des Spiels geschrieben und wir müssen diese Wörter löschen und durch ihre
Übersetzung. Hier sehen wir einen Seite-an-Seite-Vergleich, wie die Übersetzungsdateien aussehen würden, wenn wir prüfen
dieses Kästchen (links) und wenn wir es nicht ankreuzen (rechts).

Es mag bequemer erscheinen (ist es auch), leere Zeichenketten zu erzeugen, aber wenn wir irgendwie vergessen, die
eine Zeile übersetzen, wird bei Erreichen dieser Zeile im Spiel absolut kein Text auf dem Bildschirm angezeigt.
Im anderen Fall würde der Text in der Originalsprache angezeigt werden, und das kann für uns nützlich sein, wenn
Testen einer unvollständigen Übersetzung. Dies ist besonders bei Menüs wichtig, da wir so alle
Optionen aktiv, auch wenn wir sie noch nicht übersetzt haben.

                                                                                        Ich persönlich ziehe es vor, keine leeren
                                                                                        Zeichenketten, also lasse ich dieses Kästchen unmarkiert, aber
                                                                                        wenn
                                                                                        Sie maschinelle Übersetzer einsetzen wollen, müssen Sie
                                                                                        kann daran interessiert sein, leere Zeichenketten zu erzeugen.
                                                                                        Jetzt müssen wir nur noch auf "Erzeugen" klicken
                                                                                        Übersetzungen" (die eingekreiste Schaltfläche). Da die
                                                                                        informativen Text in der rechten Spalte anzeigt,
                                                                                        Dadurch erzeugt Ren'Py SDK die
                                                                                        Übersetzungsdateien innerhalb des "game/tl/Spanisch"
                                                                                        Ordner (der Name dieses Ordners ist der
                                                                                        die wir in das Feld "Sprache" geschrieben haben).

                                                                                                                                                   10
Ren'Py Spiele übersetzen: ein Leitfaden, von                            Diskord: moskys#0576                         v1.01 - jan2021
moskys

Wenn es keine weiteren Probleme gibt, wenn
Ren'Py SDK beendet seine Arbeit mit diesem
erscheint eine Meldung. Wir können klicken auf
" Weiter", um zum Hauptbildschirm zurückzukehren, oder
Schließen Sie die Ren'Py SDK-App direkt.

Wenn wir in den Ordner "game" unseres Spiels gehen, sehen wir im Unterordner "tl" zwei weitere Ordner: einen namens
"Keine" und eine weitere mit dem Wort, das wir in das Sprachfeld des Ren'Py SDKs geschrieben haben. In diesem Fall: "Spanisch":

Und im Ordner "Spanisch" finden wir die Übersetzungsskripte. Was hat Ren'Py SDK getan, um die
Sie? Nun, es ist alle ursprünglichen .rpy-Skripte durchgegangen, eines nach dem anderen in alphabetischer Reihenfolge, und, wann immer
einen übersetzbaren Text in ihnen gefunden hat, hat es eine .rpy-Datei (und die zugehörige .rpyc) mit dem
denselben Namen wie das ursprüngliche Skript und schreibt darin die Zeichenfolgen, die übersetzt werden müssen.

                                                                                                                                         11
Ren'Py Spiele übersetzen: ein Leitfaden, von                    Diskord: moskys#0576                      v1.01 - jan2021
moskys
Außerdem wird ein zusätzliches Skript erzeugt: Es heißt "common.rpy" und enthält die übersetzbaren
Befehle der Ren'Py-Menüs, die nicht spezifisch für das Spiel sind. Zum Beispiel die Warnmeldung, die erscheint
wenn wir das Spiel schließen und uns bitten, unsere Wahl zu bestätigen, oder die Monate und Wochentage, die
verwendet, um unsere gespeicherten Spiele zu benennen. Es ist eine große Datei und ziemlich mühsam zu übersetzen, aber es gibt eine
silberne
Futter: Normalerweise ist es für die meisten Spiele, die mit der gleichen Version von Ren'Py SDK erstellt wurden, üblich, also kann es
austauschbar von einem Spiel zum anderen. So können wir ein übersetztes "common.rpy"-Skript wiederverwenden, das wir
bereits in einem früheren Spiel haben. Natürlich sollten wir vor dem Ersetzen immer prüfen, ob die Zeichenketten
übereinstimmen, da es manchmal kleine Änderungen gibt und wir etwas ungewollt kaputt machen könnten.
An diesem Punkt ist die Übersetzung nur noch eine Frage des Öffnens der .rpy-Skripte des Ordners "tl/Spanisch" mit einem Text
Editor und fangen an, sie zu bearbeiten. Wir können den Namen dieser Skripte ändern (und sie sogar in einem
einzelne Datei), da Ren'Py nach Übersetzungen String für String sucht und sich nicht darum kümmert, in welcher Datei sie sich befinden
gespeichert, aber die Standardpraxis ist "nichts anfassen": So ist es einfacher, jeden übersetzten
Skript mit seinem ursprünglichen Skript.
                                                              |Top|

2 .2 - Die zwei Übersetzungsfunktionen (und noch ein Gebot)

Es ist nicht ungewöhnlich, dass wir beim ersten Mal, wenn wir mit dem Übersetzen beginnen, ein paar Zeilen in unserer Sprache
schreiben und dann
plötzlich denken: "Moment, wo sind die Optionen für den Spieler? Hat mich das Spiel hier nicht gefragt, ob ich etwas tun möchte
das eine oder das andere? " Keine Panik: In Übersetzungsdateien erscheinen die übersetzbaren Texte nicht in genau der gleichen
Reihenfolge wie im Original-Skript. Wenn es darum geht, die übersetzbaren Zeichenfolgen aus jedem Skript zu extrahieren, kann Ren'Py
teilt sie in zwei Kategorien ein: solche, die den Dialogblock bilden, und solche, die sich auf Menüoptionen beziehen,
Variablen, Zeichennamen, etc. Warum? Nun, weil jede dieser Gruppen einen anderen Namen verwenden wird.
Extraktions- und Übersetzungsfunktion.
Die Zeichenketten, die den Dialogblock bilden, verursachen keine Probleme beim Extrahieren, da das Ren'Py SDK die
sie ohne Probleme. Was es aber mit ihnen macht, wird eher ein Ärgernis und sogar einige
Kopfzerbrechen beim Übersetzen und Erstellen unseres Übersetzungspatches. Weil Ren'Py sie verschlüsselt, um zu sparen
Speicher: unter Verwendung der hexadezimalen Verschlüsselungsmethode MD5 auf 8 Byte, jede Zeichenkette wird mit einem
alphanumerischer Code, der von der Beschriftung abhängt, an der sich dieser Text im Originalskript befindet, und die
Inhalt der Zeichenkette selbst.

Wir können es anhand eines Beispiels besser sehen. Erinnern wir uns zunächst an die ersten Zeilen des Skripts "convo_oc.rpy".
des Spiels "What a Legend! ”:

Die erste Zeile mit übersetzbarem Text (der erste "String") ist Zeile 15 des Originalskripts: unter dem "convo_gate"
Etikett, ein Charakter, der als Kevin identifiziert wird, sagt "STOP!" (mit vpunch, einem Effekt, der den Spieler "schütteln"
wird
                                                                                                                                12
Ren'Py Spiele übersetzen: ein Leitfaden, von                                Diskord: moskys#0576                           v1.01 - jan2021
moskys
Bildschirm). Der Rest des Codes bis zu diesem Punkt enthält keinen Text, der auf dem Bildschirm angezeigt werden soll.

Bei der Generierung des Übersetzungsskripts mit leeren Strings hat Ren'Py alle Informationen dazu umgewandelt:

Wir können sehen, dass Ren'Py für jede Zeichenkette einen vierzeiligen Block erzeugt hat. Lassen Sie uns diese Blöcke
analysieren:

Zeilen, die mit dem Symbol # beginnen, haben lediglich informativen Charakter und können ohne Konsequenzen gelöscht werden.
Die erste verrät uns die Position dieser Zeile im Originalskript: Es ist Zeile 15 der Datei "convo_oc.rpy",
innerhalb des "Spiel"-Ordners. Die andere Zeile, die mit # beginnt, ist der zu übersetzende Originaltext, der freundlicherweise lautet
die von Ren'Py angeboten werden, damit wir wissen, was wir in unserer Sprache schreiben sollen. Und die letzte Zeile ist, wo wir sein werden
unsere Übersetzung zu schreiben (wir übersetzen nur das, was in Anführungszeichen steht, den Rest sollten wir so lassen, wie er ist). Wenn
hätten wir die Übersetzung ohne Leerstrings generiert, würde in dieser Zeile der Text wieder in Englisch erscheinen.

Der Schlüssel liegt in der zweiten Zeile. Dadurch wird die Übersetzungsfunktion für diese spezielle Zeile des
Original-Code. Wenn wir eine übersetzte Version spielen, führt Ren'Py das Spiel gemäß der ursprünglichen .rpyc
Dateien aus dem "Spiel"-Ordner, aber es wurde angewiesen, die übersetzten Texte anstelle der Originaltexte anzuzeigen
Zeichenketten. Dieser Befehl teilt Ren'Py mit, dass es in jeder Zeile des Dialogblocks die Skripte durchsuchen muss, um
für eine Zeile mit dem Befehl "translate" plus der aktiven Sprache ("Spanisch", in diesem Fall, das ist, was
die wir beim Generieren der Übersetzungsdateien geschrieben haben) plus den Verschlüsselungscode, der dem Original entspricht
Zeichenkette. Dieser Verschlüsselungscode beginnt mit dem Namen des Etiketts, in dem sich diese spezielle Zeile befindet
("convo_gate") und fährt mit dem Ergebnis der Anwendung des MD5-Systems auf den Inhalt der Zeile fort (offenbar
in diesem Verschlüsselungssystem ist "STOP!" gleich fdd309da).

Wenn es einen weiteren identischen String (ein weiteres "STOP!") innerhalb desselben "convo_gate"-Labels gäbe, würde Ren'Py
müssen ihm denselben Verschlüsselungscode zuweisen. Dies könnte jedoch zu Konflikten führen, daher wird ein _1 am Ende von
dem Code der zweiten Zeile, würde bei einer weiteren identischen Zeichenkette ein _2 angehängt werden und so weiter. Somit wird die
Die Verschlüsselungscodes sind für jeden String immer eindeutig, auch für identische Strings innerhalb des Dialogblocks.

Aber was ist, wenn wir zum Originalskript gehen und nun "Stop!" statt "STOP!" schreiben? Nun, dann wird die Übersetzung
die wir für "STOP!" haben, wird nicht mehr funktionieren, weil der MD5-Code von "Stop!" ein anderer sein wird und Ren'Py
wird in den Übersetzungsskripten nicht gefunden, sodass stattdessen der Originaltext angezeigt wird. Dies verursacht einige
Ärgernisse bei der Übersetzung neuer Versionen von Spielen, die sich noch in der Entwicklung befinden, da es üblich ist, dass die Entwickler
kleinere Tippfehler zu korrigieren und hier und da ein paar Sätze umzuschreiben. Wir werden sicher wieder übersetzen müssen
Zeichenketten, die wir bereits vorher übersetzt hatten, weil selbst die kleinste Änderung ihre
Verschlüsselungscode vollständig und sie werden für Ren'Py Motor völlig anders sein. Dies geschieht auch, wenn seine
                                                                                                                                               13
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                        Diskord: moskys#0576                            v1.01 - jan2021

Beschriftung umbenannt wird, auch wenn der Inhalt der Zeichenkette nicht geändert
wird.
                  Ren'Py's Fünftes Gebot: Jede minimale Änderung an der ursprünglichen Zeichenkette
                  wird die bereits vorhandene Übersetzung dieser Zeile ungültig.

Glücklicherweise ist das, was passiert, eine einfache Zeilenverschiebung (die Zeichenkette geht von Zeile 7 zu Zeile
8 , aber der Inhalt ändert sich nicht und auch die Beschriftung nicht), funktioniert die bisherige Übersetzung weiter,
da diese Verlagerung keine Änderung im Verschlüsselungscode bedeutet. Die #kommentierte Zeile, die uns sagt
wo sich diese Zeichenkette im ursprünglichen Skript befindet, wird veraltet sein, aber das hat keinen großen Einfluss auf unsere
Übersetzung.

Aber, wie gesagt, Ren'Py verwendet zwei Übersetzungssysteme. Zusätzlich zur codebasierten Verschlüsselung, für den Rest der
Strings, die nicht zum Dialogblock gehören, wird ein einfacheres System der direkten Übersetzung verwendet. Welche Zeichenketten sind
auf die wir uns beziehen? Nun, wie ich am Anfang dieses Abschnitts sagte, spreche ich über die Optionen, die
die dem Spieler während des Spiels präsentiert werden, sondern auch über die Namen der Charaktere, mögliche Variablen, die im
Spiel, die einen Textwert haben, Systemmenüs (Voreinstellungen, Spiel speichern und laden...), und so weiter.

Wenn Ren'Py ein übersetztes Spiel ausführt, werden alle diese Zeichenfolgen auf dem Bildschirm durch direkte Substitution ersetzt,
ohne irgendwelche Umwege oder Verschlüsselungen. Umdies zu erreichen, wird beim Generieren der Übersetzungsskripte das Ren'Py SDK
gruppiert sie alle am Ende des Dokuments, unter dem Befehl "Spanische Zeichenketten übersetzen".Diese
ist der Beginn des zweiten Abschnitts des "convo_oc"-Übersetzungsskripts aus "What a Legend! ”:

                                                                Wie Sie sehen können, gibt es hier keine seltsamen Codes. Und wenn die
                                                                " Der Befehl "Übersetzen" wurde vorher auf jede Zeile angewendet, jetzt
                                                                werden alle mit nur einem Befehl übersetzt. Wir bleiben
                                                                haben eine erste Zeile mit dem Symbol #, um uns über die
                                                                Position der übersetzbaren Zeichenfolge im ursprünglichen Skript, aber
                                                                dann vergisst es die Verschlüsselungscodes und geht direkt zu
                                                                den ursprünglichen Text mit dem Befehl "old" anzeigen; und dann
                                                                haben einen "new"-Befehl vor dem Text, der erscheinen soll
                                                                wenn das Spiel eine Übersetzung ins "Spanische" durchführt
                                                                Sprache (diejenige, die wir im Ren'Py SDK geschrieben haben, als wir noch
                                                                Generierung der Übersetzungsskripte).

Im Gegensatz zu vorher wird jetzt keine wiederholte Zeichenkette nicht nur in diesem Skript, sondern in der gesamten Menge der Übersetzung
erscheinen
Skripte. Wenn Ren'Py SDK die Original-Skripte durchläuft, um die Übersetzungsdateien zu erzeugen, wird es nur
extrahiert jede Zeichenkette beim ersten Auffinden und übersieht dabei die möglicherweise vorhandenen Duplikate. Also,
Beim Abspielen wird diese Zeichenkette jedes Mal, wenn sie erscheint, durch die Übersetzung ersetzt, die wir eingeführt haben
dieses eine Mal. Dies erspart uns die Wiederholung von Arbeit, wird aber lästig, wenn wir auf
identische Zeichenketten, die je nach Kontext unterschiedliche Bedeutungen haben können. Denken Sie zum Beispiel an eine Zeichenkette
das während des Spiels mehrmals wiederholt wird, aber nur "Richtig" sagt: manchmal könnte es auch "Richtig" bedeuten
und manchmal kann es sich auf die rechte Seite von etwas beziehen, oder eine Richtung angeben, und vielleicht in unserem
Sprache verwenden wir für jedes Konzept ein anderes Wort. Aber Ren'Py SDK würde nur das erste "Richtig" extrahieren
Zeichenkette, so dass wir sie nur einmal übersetzen konnten und diese eine Übersetzung immer erschien, so dass manchmal die
Der übersetzte Text würde keinen Sinn ergeben. Wir werden später sehen, wie Sie dieses Problem lösen können.
Wenn wir im obigen Beispiel die Übersetzung für die Zeichenkette "Permit" in dieses Skript schreiben, wird diese Übersetzung
erscheint im gesamten Spiel immer dann, wenn außerhalb des Dialogblocks die Zeichenkette "Erlauben" vorkommt. Aber Vorsicht!
Nach dem vierten Gebot von Ren'Py würden wir, wenn es eine weitere Zeichenkette mit dem Text "permit" gäbe
übersetzen müssen, da Ren'Py die Groß- und Kleinschreibung perfekt beachtet.

                                                                                                                                             14
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                        Diskord: moskys#0576                             v1.01 - jan2021

Zurück zum Thema, warum verwendet Ren'Py zwei verschiedene Übersetzungsfunktionen? Nun, für Agilität und effiziente
Probleme mit der Speichernutzung. Technisch gesehen könnte dieses "Direktersatz"-Übersetzungssystem angewendet werden auf
absolut alle Strings im Spiel, aber normalerweise ist der Dialogblock recht groß und besteht aus viel längeren
Sätze, die fast nie wiederholt werden. Wenn das Programm also eine Übersetzung anzeigen muss, benötigt es weniger Zeit
Tausende von verschlüsselten Codes zu finden und zu ersetzen als Tausende von ganzen Zeilen, die in der Regel länger sind
als diese Codes. Diese anderen Menüstrings sind jedoch in der Regel kürzer und viel weniger zahlreich, und
ist es möglich, dass sie in den Skripten häufiger wiederholt werden, so dass Ren'Py es sich leisten kann, eine bestimmte
nach dem genauen Inhalt dieser Zeichenfolgen suchen, ohne dass es zu spürbaren Verzögerungen beim Spielen kommt.

Wie auch immer, das sind nur einige vollkommen vergessliche Begriffe. Das Wichtigste ist zu wissen, dass für
Ren'Py SDK gibt es zwei Arten von "Strings" und jeder dieser Typen verwendet ein anderes Übersetzungssystem,
und deshalb werden sie in den Übersetzungsskripten separat erscheinen: Zuerst finden wir alle Zeichenketten, die
zum Dialogblock, und dann alle, die Menüs, Optionen und Variablen entsprechen.
                                                                         |Top|

2 .3.- Helfen und/oder Austauschen des Extraktors

Der Grund für die Erläuterung der beiden Arten von Ren'Py's Übersetzungsfunktionen im vorherigen Punkt ist, dass,
Leider ist das Ren'Py SDK nicht immer in der Lage, absolut alle Strings zu erkennen, die wir übersetzen sollten: Ja, es
werden alle diejenigen extrahiert, die den Dialogblock integrieren (diejenigen, die dank der Verschlüsselung
Code), aber es ist möglicherweise nicht in der Lage, alle Zeichenketten zu identifizieren, die mit der Methode der direkten Ersetzung übersetzt werden
(obwohl es die Optionen extrahiert, die es den Spielern erlauben, während des Spiels Entscheidungen zu treffen).

Um zum Beispiel Ren'Py SDK in die Lage zu versetzen, die Namen der Charaktere automatisch zu extrahieren, hat der Entwickler des Spiels
sollte diese Zeichen auf eine ganz bestimmte Art und Weise definiert haben, die viele Entwickler aufgrund von Unwissenheit nicht verwenden.
Aber wenn sie es nicht tun, können wir es tun.

Da die Macher von "What a Legend!" ihre Hausaufgaben gemacht haben, machen sie uns Übersetzern das Leben sehr viel leichter, denn
In diesen Beispielen werden wir das andere Spiel verwenden, das wir bereits verwendet hatten, um über .rpa-Dateien zu sprechen und
UnRen Extraktor. Schauen wir also mal, wie der "WVM"-Entwickler eine der an der Geschichte beteiligten Personen definiert.
In diesem Fall hat er in der Datei "script.rpy" ein "MC inneres Selbst" erstellt, um den Spielern anzuzeigen, dass das, was wir in
das Dialogfeld ist ein Gedanke unseres eigenen Charakters:

Dies ist eine typische Zeile des Ren'Py-Codes. Sie beginnt mit einem Befehl (define), der angibt, was diese spezielle Zeile
tut, in diesem Fall die Definition einer Variablen. Dieser Variablen wird ein Name (mcm) zugewiesen, der im Rest von
das Skript, um es zu identifizieren, und es wird angewiesen, sich wie eine Variable vom Typ Zeichen (Character) zu verhalten. Jetzt Ren'Py
weiß, dass es immer, wenn es die Buchstaben mcmvor einer Zeichenkette findet, einen Namen über dem Textfeld anzeigen muss, damit
der Spieler weiß, welche Figur spricht. Und was wird dort gezeigt? Was erscheint danach in
Klammern: der Name des Zeichens ("Ihre Gedanken"), in einer bestimmten Farbe, mit einer Linie, die das
Buchstaben, um sie hervorzuheben.

Offensichtlich ist "Your thoughts" eine Zeichenkette, die wir übersetzen sollten, aber wenn wir die Übersetzungsskripte generieren
mit Ren'Py SDK, würde es nirgendwo erscheinen. Ren'Py Geheimnisse. Was können wir tun? Nun, es gibt drei
Optionen. Die erste Option, die wir schlichtweg verwerfen, ist, es einfach zu akzeptieren und die Zeichenkette immer
auf Englisch angezeigt. Die zweite Möglichkeit ist, Ren'Py SDK zu verstehen zu geben, dass dieser zitierte Text eine Zeichenkette ist
die wir übersetzen wollen und nicht nur einen internen Code wie den, der die Textfarbe angibt. Sehen Sie:

Wir haben das ursprüngliche Skript bearbeitet, um die Zeichenfolge "Ihre Gedanken" in Klammern zu setzen, und wir haben eine
Unterstrich _ vor den Klammern. Diese Kombination von _( ) -Symbolen ermöglicht es Ren'Py SDK, zu identifizieren
den zitierten Text innerhalb der Klammern als übersetzbare Zeichenfolge.

                                                                                                                                                  15
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                        Diskord: moskys#0576                            v1.01 - jan2021

Und wenn wir jetzt die Übersetzungsskripte generieren, würden wir dies im Bereich der direkten Übersetzung finden:

Das ist das Ergebnis nach der Übersetzung ins Spanische, versteht sich. Aber das Wichtigste ist: Hatten wir nicht bearbeitet
das ursprüngliche Skript, um "Ihre Gedanken" für _("Ihre Gedanken") zu ersetzen, würde diese Zeichenfolge nicht erscheinen
in den Übersetzungsskripten.

Das heißt nicht, dass wir es nicht hätten übersetzen können: Da es sich um eine direkte Übersetzung handelt, könnten wir immer schreiben
es in unserem Übersetzungsskript ohne die Hilfe von Ren'Py SDK. Dies ist die letzte der drei Optionen, die ich zuvor erwähnt habe:
Anstatt die Original-Skripte zu bearbeiten, schreiben wir in die Übersetzungs-Skripte die übersetzbaren Zeichenfolgen, die Ren'Py
SDK nicht erkannt hat. Umdies zu tun, würden wir zum Abschnitt des Übersetzungsskripts gehen, wo direkte Übersetzungen
erscheinen (die, die mit der Funktion translate Spanish strings: beginnt) und wir würden eine
Übersetzungsfunktion mit dem gleichen Format, das wir oben gesehen haben: immer unter Beachtung der 4 Leerzeichen Einrückung, wie
sowie Anführungszeichen, wie sie in den ersten beiden Geboten von Ren'Py stehen, in einer Zeile würden wir den Befehl old schreiben
gefolgt von der zu übersetzenden Zeichenkette (unter strikter Einhaltung der Schreibweise, da Ren'Py's vierte und fünfte
Gebote), und dann würden wir darunter das neue Kommando, gefolgt von der Übersetzung, schreiben. Die
Zeile, die mit einem #-Symbol beginnt, wäre nicht notwendig, da sie nur informativ ist.

Ich persönlich bin es gewohnt, die Originaldateien zuerst zu überprüfen und zu bearbeiten, damit Ren'Py SDK dann eine vollständige Extraktion
durchführen kann
Job. Natürlich vermisse ich manchmal den einen oder anderen String und muss die Übersetzungsskripte neu generieren
mehrmals, was nicht mühsamer ist, als die Ren'Py SDK-App erneut zu öffnen und auf generieren zu klicken
Übersetzungen. Andere Übersetzer bevorzugen es, die Original-Skripte so wenig wie möglich zu bearbeiten, daher erstellen sie diese
Übersetzungsskripte zu Beginn und ändern Sie sie dann manuell, um alles einzuschließen, was Ren'Py SDK
nicht extrahiert hat. Das ist nur eine Frage des persönlichen Geschmacks und der Arbeitsgewohnheiten.
Ob Sie dem Ren'Py SDK vorab helfen wollen oder lieber in den Übersetzungsskripten die
fehlende Zeichenfolgen, müssen Sie die Original-Skripte durchgehen und nach diesen Arten von Befehlen suchen:

        - • Zeichen("... "), die zur Definition von Zeichen verwendet werden, wie wir im Beispiel gesehen haben
        - • text "... ", wird verwendet, um Text auf einem bestimmten Bildschirm, außerhalb des Textfelds, anzuzeigen
        - • textbutton "... ", verwendet für Texte, die beim Anklicken eine Aktion ausführen
        - • Tooltip '...', wird verwendet, um eine Popup-Meldung anzuzeigen, wenn der Mauszeiger über einen Punkt bewegt wird
        - • renpy.input("..."), wird verwendet, um Eingaben im Spiel zu ermöglichen (normalerweise, damit Spieler Charaktere benennen
        - • können)
              $ renpy.notify('...', 'unlock'), dient zur Anzeige von Meldungen nach Abschluss einer Aktion
Zusätzlich haben wir Textvariablen. Hier können wir mehrere Möglichkeiten finden, aber keine von ihnen wird
automatisch von Ren'Py SDK extrahiert:

        - • defaultvariable_name = "..."
        - • definevariable_name = "..."
        -• $variable_name                             = "..."

Es geht also darum, all diese Anführungszeichen mit dem _()-Symbol zu umschließen und die Übersetzung zu erzeugen
Skripte, oder kopieren Sie dessen Inhalt (inklusive Zitate) direkt in ein Übersetzungsskript (egal welches) mit
das alte Kommando und darunter das neue Kommando mit seiner Übersetzung. Beachten Sie, dass Sie alles kopieren müssen
der in Anführungszeichen steht, nicht nur der zu übersetzende Text, da manchmal Tags innerhalb von {} vorhanden sind
Symbole, die verwendet werden, um den Text fett, kursiv, mit einer anderen Schriftart oder einer anderen Größe usw. darzustellen. Diese Tags
sind auch Teil der Zeichenkette, die Ren'Py suchen und ersetzen wird, also müssen sie hinter dem alten
Befehl, um Ren'Py zu helfen, genau diese Zeichenkette korrekt zu identifizieren.

                                                                                                                                                16
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                                  Diskord: moskys#0576                            v1.01 - jan2021

Zum Schluss noch eine Anmerkung: Das Symbol _( ) wird nur verwendet, um die Zeichenketten in Klammern zu extrahieren. Sobald
in ein Übersetzungsskript extrahiert haben, können wir dieses Symbol löschen und die Übersetzung wird einwandfrei funktionieren, genauso wie wenn wir
diese Zeichenfolgen manuell in das Übersetzungsskript schreiben. Daher müssen Sie beim Übersetzen neuer Versionen desselben
Spiel, wäre eine erneute Bearbeitung der ursprünglichen Skripte nicht notwendig, da wir die alten Übersetzungsskripte in
in dem diese Zeichenfolgen bereits übersetzt erscheinen. Außerdem ist es nicht notwendig, das bearbeitete Skript in die
Übersetzungspatch, da Player das _( )-Symbol nicht benötigen: Sobald die übersetzbare Zeichenkette in der
Übersetzungsskript, wird der Text auf dem Bildschirm übersetzt angezeigt. Ich gebe zu, dass ich das relativ schnell gelernt habe
und hätte ich das früher gewusst, hätte ich mir ein paar Stunden unnötiger Arbeit erspart.
                                                                                  |Top|

2 .4.- Die Option Sprachwechsel

Das Letzte, was wir tun sollten, bevor wir mit der Übersetzung beginnen, oder vielleicht das Erste, ist, darüber nachzudenken, wie wir
die Übersetzung im Spiel aktivieren, sobald sie erstellt wurde. Wollen wir, dass das Spiel immer in unserem
Sprache? Fügen wir die Option zum Ändern der Sprache im Hauptmenü oder im Optionsmenü hinzu? Machen wir
es vorziehen, die Spieler bei jedem Start des Spiels entscheiden zu lassen, in welcher Sprache sie spielen wollen? Und wie werden
wir das alles machen, mit einer reinen Textfrage oder dem Erstellen eines Bildschirms mit Flaggen und anderen visuellen Elementen? Als
immer, es hängt vom persönlichen Geschmack des Übersetzers, der verfügbaren Zeit und den Programmierkenntnissen ab, und natürlich auch von der
Aufbau des Originalspiels.

Der einfachste Weg ist, das Spiel immer in der gewünschten Sprache starten zu lassen. Dazu müssen wir nur öffnen
ein beliebiges Skript des Spiels (vorzugsweise das Skript "gui.rpy", da ein Großteil der Konfiguration des Spiels dort definiert ist, aber es
spielt eigentlich keine Rolle und wir können sogar eine neue erstellen) und schreiben diese Codezeile, ohne Einrückung:

config.language = "Spanisch" definieren

Wobei "Spanisch", erinnern wir uns, das Wort ist, das ich in Ren'Py SDK eingegeben habe, als ich die Übersetzung generierte
Skripte; und damit die Referenz, die von den "translate"-Befehlen verwendet wird, also verwenden Sie den von Ihnen gewählten Begriff. Wenn wir
nichts anderes tun, wird das Spiel immer in unserer Sprache gestartet und die Spieler haben keine In-Game
Option, um wieder in die ursprüngliche Sprache zu wechseln: Auch nach dem Deaktivieren dieser Codezeile (Löschen oder Schreiben einer
# Symbol am Anfang der Zeile) würde das Spiel nicht mehr in der Originalsprache starten, da standardmäßig
Ren'Py Spiele starten immer in der letzten Sprache, in der sie gespielt wurden. Eine neue config.language
sollte mit der Originalsprache eingerichtet werden, die bei Ren'Py immer None heißt.

Die beste Vorgehensweise ist in jedem Fall, eine Option zum Ändern der Sprache im Menü "Voreinstellungen" hinzuzufügen.
Angenommen, das Spiel verwendet den Voreinstellungsbildschirm, den Ren'Py standardmäßig einbindet, müssten Sie im
" screens.rpy"-Originalskript, suchen Sie den Abschnitt des Menüs "Preferences" und lassen Sie ihn wie folgt aussehen:

                                                                                                                                                        17
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                         Diskord: moskys#0576                              v1.01 - jan2021

Der genaue Code, den Sie schreiben müssten, wäre folgender (denken Sie immer daran, die Einrückungen mit der Leertaste zu markieren):

                   vbox:
                             style_prefix "pref"
                             label _("Sprache")
                             textbutton _("Englisch") Aktion Sprache(Keine)
                             textbutton _("Español") Aktion Sprache("Spanisch")

Die Zeichenkette _("Englisch") nimmt an, dass die Originalsprache des Spiels Englisch ist; wir sollten die richtige schreiben
aber den Rest der Zeile so lassen, wie sie ist, da Ren'Py immer die ursprüngliche Sprache als die None betrachten wird
Sprache. Und natürlich sollte _("Español") durch den Namen Ihrer Sprache in Ihrer eigenen ersetzt werden
Sprache, während der Befehl action Language("")das Wort enthalten sollte, mit dem Sie die
Übersetzungsskripte.

Sie haben vielleicht bemerkt, dass sich innerhalb des _( ) -Symbols mehrere Zeichenketten befinden, so dass Ren'Py SDK diese extrahiert.
Ich persönlich übersetze nur den Titel, "Sprache", und lasse die anderen unübersetzt. Warum? Nun, weil das
Weise erscheinen die Namen der Sprachen immer in ihrer eigenen Sprache geschrieben, unabhängig davon, welche
Sprache, in der wir spielen. Wenn zum Beispiel ein Spieler, der unsere Sprache nicht spricht, zufällig
unsere Übersetzung und führt das Spiel in unserer Sprache aus, indem sie auf das Einstellungsmenü klicken, werden sie schnell sehen
das Wort "Englisch" in englischer Sprache geschrieben und werden leicht verstehen, dass sie dort die Sprache wechseln können.

Was andere Optionen angeht, so gibt es in Wahrheit so viele wie Spiele und Übersetzer, daher werde ich nicht ins Detail gehen
alle von ihnen. Schauen Sie sich einfach an, wie das Einstellungsmenü des Spiels kodiert ist (falls es angepasst ist), machen Sie einige
Reverse Engineering, durchsuchen Sie Online-Foren und verwenden Sie Ren'Py-Tutorials, um Bildschirme, Splashscreens zu erstellen,
Imagemaps, Buttons... Es gibt eine ganze Welt von Möglichkeiten, so komplex und visuell ansprechend wie Sie wollen.
                                                                          |Top|

2 .6.- Updates übersetzen

In Zeiten von Patreon ist es sehr üblich, dass Spiele nicht als fertige Projekte veröffentlicht werden, sondern in
episodisches Format, und wir sind gezwungen, unsere Übersetzungen zu aktualisieren, wenn neue Versionen veröffentlicht werden. Das Verfahren
hat keine größeren Komplikationen... es sei denn, wir wollen es so machen, wie es das Ren'Py SDK vorschlägt. Das offizielle Ren'Py
App bietet uns eine Möglichkeit, die vorhandenen Übersetzungen der alten Version eines Spiels zu extrahieren und in die
neue, wobei die Übersetzungsskripte mit dem neuen Inhalt aktualisiert werden. Schön, oder? Nun, nicht so sehr. Lassen Sie uns mal sehen.

                                                                                            Um dies auf die "offizielle" Weise zu tun, würden wir
                                                                                            Ren'Py SDK zu starten, würden wir im Menü
                                                                                            Projektordner die vorherige Version des
                                                                                            Spiel, das wir übersetzen wollen (also, das alte
                                                                                            Version, die wir bereits übersetzt haben) und, in
                                                                                            dem Bildschirm Übersetzungen generieren, würden wir
                                                                                            klicken Sie auf "Zeichenketten-Übersetzungen extrahieren".

                                                                                            Sobald dieser Prozess beendet ist, würden wir wieder zu
                                                                                            dem Startbildschirm des Ren'Py SDK, würden wir
                                                                                            wählen Sie die neue Version des Spiels (die, die wir
                                                                                            jetzt übersetzen wollen) und, zurück in diesem
                                                                                            Bildschirm "Übersetzungen generieren", würden wir auf
                                                                                            "Strings-Übersetzungen zusammenführen".

Theoretisch hätten wir am Ende des Prozesses im Ordner "game/tl/Spanish" des Spiels
neue Version, unsere vorherige Übersetzung mit den neuen übersetzbaren Zeichenfolgen dieser neuen Version vermischt. Das Problem ist
dass dieses offizielle Verfahren nicht so funktioniert, wie es sollte, und Übersetzungen einfach nicht zusammengeführt werden: Wenn ein Original

                                                                                                                                                      18
Ren'Py Spiele übersetzen: ein Leitfaden, von moskys                        Diskord: moskys#0576                            v1.01 - jan2021

Skript von einer Version zur anderen überhaupt nicht geändert hat, wird sein Übersetzungsskript von der
alte Version auf die neue, aber wenn das Originalskript der neuen Version nicht mit der alten übereinstimmt, kann Ren'Py SDK
erzeugt ein komplett neues Übersetzungsskript ohne jede Spur der vorher existierenden Übersetzung (auch für
die Strings, die unverändert bleiben), was uns zwingt, die Übersetzungsarbeit zu wiederholen.

Der effektivste Weg ist also, die neue Version des Spiels herunterzuladen und in den "game"-Ordner zu kopieren
den Ordner "game/tl/Spanisch" der Vorgängerversion (d. h. unsere alten Übersetzungsskripte), und
die Übersetzungsdateien für die neue Version generieren, als ob es sich um ein komplett neues Spiel handeln würde. Wenn wir den GLEICHEN
Sprache der Vorgängerversion (d. h., wenn wir in der Sprachbox von Ren'Py SDK das gleiche Wort schreiben, das wir
verwendet, in meinem Fall also "Spanisch"), und wir aktivieren NICHT die Option "Vorhandene Übersetzungen ersetzen",
Ren'Py SDK aktualisiert einfach die vorhandenen Übersetzungsskripte mit den Zeichenketten, für die es keine gültigen
Übersetzung. Am Ende eines jeden Übersetzungsskripts werden sowohl die neuen übersetzbaren Strings des Spiels (der neue Inhalt)
und die Zeichenketten, die seit der letzten übersetzten Version geändert wurden, werden hinzugefügt, wiederum aufgeteilt in
zwei Blöcke (der erste für die Dialogblock-Strings und der zweite für Optionen und Menüs). Übersetzung sortieren
Skripte nach ihrem letzten Änderungsdatum zu sortieren, ermöglicht es uns, schnell zu sehen, welche Skripte neue Inhalte haben, die wir übersetzen
müssen.
Das gleiche Verfahren wird für die Aktualisierung unserer Übersetzungsskripte verwendet, nachdem wir die ursprünglichen Skripte bearbeitet haben, um
das _( )-Symbol einschließen, falls Ren'Py SDK zunächst nicht alle übersetzbaren Elemente extrahiert hat
Zeichenketten. Das heißt, wir würden die Original-Skripte bearbeiten und eine neue Übersetzung ohne
die die vorhandenen ersetzen, und dann wird Ren'Py SDK am Ende des Übersetzungsskripts eine neue Liste
mit allen Strings, die zuvor nicht erkannt wurden.
                                                                        |Top|

3 .- WARUM ES NICHT KLAPPT

Nachdem ich Ihnen dies alles gesagt habe, wenn Sie Ihre eigene Übersetzung erstellen konnten und alles funktioniert
richtig, dann herzlichen Glückwunsch, dass Sie ein so aufmerksamer Schüler sind, und auch, dass Sie sich für Ihr
übt ein ganz einfaches Spiel. Denn das Normalste, was passieren kann, ist, dass Sie beim Spielen Ihrer
übersetzten Version werden hin und wieder einige Texte noch unübersetzt erscheinen, auch wenn Sie
sie in den Übersetzungsskripten übersetzt. Als nächstes werde ich versuchen, einige der häufigsten Vorfälle zu erklären.
                                                                        |Top|

3 .1.- Erkennung von Bugs und Fehlern

Als Erstes sollten wir uns mit dem Bildschirm vertraut machen, den Ren'Py verwendet, um uns zu warnen, wenn etwas
falsch. In einer idealen Welt würden Spiele bugfrei und ohne kritische Fehler veröffentlicht werden, so dass der erste fatale
Screenshot, mit dem ein Übersetzer konfrontiert werden könnte, sollte derjenige sein, der uns warnt, dass das Ren'Py SDK nicht die
Übersetzungsskripte. Das kann nur bedeuten, dass wir bei der Bearbeitung der ursprünglichen .rpy-Datei einen oder mehrere Fehler gemacht haben
Skripte. Hier haben wir die spanische Version dieses Bildschirms:

                                                                                                                                               19
Sie können auch lesen