Mehrsprachigkeit und grafische Oberflächen

Henry939

Aktives Mitglied
Hallo Freunde der Sonne,

Ich habe ein kleines RPG geschrieben:
https://repl.it/@Dexter1997/StaidRobustUnicorn

Nehmen wir an, ich möchte dieses Spiel in mehreren Sprachen veröffentlichen. Ich könnte am Anfang des Programms fragen, welche Sprache der Benutzer spricht, und dann per if/else-Verzweigungen den Text ausgeben. Diese Lösung würde allerdings unnötig viel Code bedeuten. Wie macht man so ein Programm effektiv mehrsprachig?

Zweite Frage: Nehmen wir an, ich möchte die Logik des Spiels von der Ausgabe trennen. Es sollten also mehrere Versionen des Spiels existieren können. Die eine arbeitet zum Beispiel mit einer einfachen GUI, die für schwache Computer optimiert ist, die andere arbeitet mit einer komplexen GUI, die besonders schön ist, und eine andere Version funktioniert im Terminal. In der jetzigen Fassung des Programms müßte ich alle Klassen umschreiben. Wie läßt sich das Problem der Darstellung aus der Logik des Spiels heraustrennen und gezielt lösen?

Ich danke für alle Antworten! Besonders würde ich mich über einfache, vielleicht sogar auf meinen Quellcode bezogene Codebeispiele freuen (Natürlich nicht zu aufwendig)!
 
Mehsprachigkeit erreichst du am einfachsten indem du alle Texte die du ausgibs5 nicht direkt in dem Source schreibst sondern statt dessen eine Methode getString() o.ä. Aufrufst mit z.b. dem englischen Text als Parameter. Diese Methode schaut dann in einer der ausgewählten entsprechenden Texttabelle nach ob dieser String in der gewählten Sprache vorhanden ist und wenn ja gibt er den übersetzten zurück. Ansonsten wird einfach der Parameter selber zurück gegeben. Deshalb macht es Sinn als default englisch zu nehmen.
Die meisten IDE bieten für sowas fertige Module an. Bei Eclipse heißt es Externalize Strings oder so. Die erstellen diecbenötigten Methoden automatisch für dich und zeigen dir auch welche Texte ersetzt werden müssen etc.

Die Trennung von Uli und Logik macht man mittels MVC Pattern. Dazu gibt es ohne Ende Lektüre im Netz.

Gruß

Claus
 
Eignet sich das MVC-Entwurfsmuster auch für die Entwicklung von Terminalprogrammen? Wie würden dann Funktionen aussehen, die man bei Terminalprogrammen in eine Controller-Klasse packt?
 

Zurück
Oben