| Geschrieben um 14:45 am 01.02.2014 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 107 | Wie würdet ihr eine Übersetzung eines (Inform 6) Spiels angehen? Den kompletten Source-Code kopieren und dann übersetzen? (Hätte den Nachteil, dass man möglicherweise das gleiche Spiel zweimal parallel warten muss!) Oder alle Texte in einem Spiel per Sprach-Switch unterbringen? (Scheint mir recht komplex…) Es gibt ja eine Compileroption, um Texte aus dem Spiel zu exportieren. Gibt’s das auch in die andere Richtung? :-) |
| Geschrieben um 14:57 am 01.02.2014 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 684 | Ich habe das per Versionsverwaltungssystem gehandhabt: Zwei Branches, zwischen denen ich per eingebauter Merge-Funktion rein die Spiellogik betreffende Änderungen pflege, während Strings und Schlüsselworte natürlich unterschiedlich sind. Martin empfiehlt auf seiner Seite dagegen ja die Pseudo-Präcompiler-Option. |
| Geschrieben um 20:53 am 02.02.2014 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p><strong>Hannes:</strong></p> <blockquote> <p>Martin empfiehlt auf seiner Seite dagegen ja die Pseudo-Präcompiler-Option.</p> </blockquote> <p>Ach, ich <em>empfehle</em> die eigentlich nicht. Die Seiten über Übersetzung sind aus dieser unseligen und schon lange verschollenen Google-Gruppe Rakonto Interaktiva entstanden. Die Teilnehmer wollten das so und das durch die vielen Sprachdefinitionen extrem unübersichtliche Jade-Beispiel war eher ein Projekt, wo jeder mal was beitragen konnte. Bei zwei Sprachen geht’s aber vielleicht.</p> <p>Ich hatte mir einmal ein System, das ähnlich wie <a href="http://www.gnu.org/software/gettext/">gettext</a> arbeitet, überlegt, was aber eher kompliziert geworden wäre.</p> <p>Man hätte den Quelltext gescannt und daraus ein Skelett für die Spiellogik und eine Sprachdatei extrahiert. Die Sprachdatei wird übersetzt und dan in das Skelett zurückgeführt.</p> <p>Man kann allerdings nicht alle Texte einfach so übersetzen, weil durch die komische I6-Print-Syntax die Texte nicht schön gekapselt sind. Außerdem sollte man alle Properties, die mit der Eingabe und mit der Ausgabe des Objektnamens zu tun haben, zusammenfassen.</p> <p>Aus dem I6-Original</p> <p>“`Object black_book “schwarz@00 Buch”</p> <p> has neuter</p> <p> with name ‘schwarz’ ‘buch’</p> <p> with description</p> <p> “Das schwarze Buch ist in einer dir unbekannten</p> <p> Schrift geschrieben.”</p> <p> with before [;</p> <p> Take, Remove:</p> <p> deadflag = 1;</p> <p> print “Dich trifft der Blitz, als du das Buch</p> <p> aufheben willst.”;</p> <p> rtrue;</p> <p> ]</p> <p> ;“`</p> <p>würden das Skelett</p> <p>“`Object black_book</p> <p> ${BLACK<em>BOOK</em>INPUT}</p> <p> ${BLACK<em>BOOK</em>OUTPUT}</p> <p> ${BLACK<em>BOOK</em>DESCRIPTION}</p> <p> with before [;</p> <p> Take, Remove:</p> <p> deadflag = 1;</p> <p> ${BLACK<em>BOOK</em>TEXT_1}</p> <p> rtrue;</p> <p> ]</p> <p> ;“`</p> <p>und die Sprachdatei</p> <p>“`${BLACK<em>BOOK</em>INPUT}</p> <p>! with name ‘schwarz’ ‘buch’</p> <p>${BLACK<em>BOOK</em>OUTPUT}</p> <p>! “schwarz@00Buch”</p> <p>! has neuter</p> <p>${BLACK<em>BOOK</em>DESCRIPTION}</p> <p>! with description</p> <p>! “Das schwarze Buch ist in einer dir unbekannten</p> <p>! Schrift geschrieben.”</p> <p>${BLACK<em>BOOK</em>TEXT_1}</p> <p>! print “Dich trifft der Blitz, als du das Buch</p> <p>! aufheben willst.”;“`</p> <p>extrahiert. Die Sprachdatei muss man dann übersetzen:</p> <p>“`${BLACK<em>BOOK</em>INPUT}</p> <p>! with name ‘schwarz’ ‘buch’</p> <p> with name ‘black’ ‘book’</p> <p>${BLACK<em>BOOK</em>OUTPUT}</p> <p>! “schwarz@00Buch”</p> <p>! has neuter</p> <p> “black book”</p> <p>“`</p> <p>Wie gesagt, ich hatte das überlegt, mehr nicht, denn durch die nicht sehr einheitliche I6-Syntax wird das sehr verwirrend. Und ein Übersetzer muss auch I6 können. Und wenn sich die Spiellogik im Original ändert, braucht man eh wieder eine Versionskontrolle.</p> <p>Lange Rede, kurzer Sinn: Parallele Versionen, deren Logik dann abgeglichen wird, ist gewiss die einfachere Variante.</p> <p><strong>Mischa:</strong></p> <blockquote> <p>Es gibt ja eine Compileroption, um Texte aus dem Spiel zu exportieren. Gibt’s das auch in die andere Richtung? :-)</p> </blockquote> <p>Das wäre gar nicht so dumm, aber es hat dieselben Probleme wie oben beschrieben: Man muss bei Textadventures die Eingabe und die Ausgabe übersetzen und zur Ausgabe gehören halt auch Dinge wie Genus und besondere Artikel, und und und.</p> </div></td> |