Ich arbeite derzeit an einem Spiel. Dabei habe ich mir Gedanken darüber gemacht, wie man die Sprachunterstützung für mehrere Sprachen managen kann. Weiß jemand, wie das normalerweise gemacht wird?
Sprachunterstützung
![]() Anmeldungsdatum: Beiträge: 115 Wohnort: Gerasdorf bei Wien |
|
![]() Anmeldungsdatum: Beiträge: 1238 |
Unter Linux ist gettext der quasi Standard. Aber auch zB das Qt Framework hat dafür eigenen Routinen. Und sonst sind I18N (internationalization) und L10N (localization) gute Suchbegriffe für dich. |
![]() Anmeldungsdatum: Beiträge: 17622 Wohnort: Berlin |
ubuntu810 schrieb:
Mit Java: Ja. Hast Du eine spezielle Sprache im Auge? |
![]() Anmeldungsdatum: Beiträge: 29 |
Hallo, im Allgemeinen werden sämtliche Strings, die irgendwo ausgegeben werden in einem assoziativen Array definiert, welches am besten in einer eigenen Datei definiert ist. Statt des Strings greift man dann auf den entsprechenden Wert im Array zu. Diese Datei kann man dann recht leicht kopieren und übersetzen. Bei der Sprachauswahl muss dann lediglich die richtige Datei (also das richtige Array) geladen werden. Das oben erwähnte gettext funktioniert vom Prinzip genuso. Jedoch kann man für jeden String eine Alternative in einer anderen Sprache definieren (grob gesagt). Unter Java kann man mit eclipse (bei irgendeinem Punkt im Kontextmenü, leider weis ich grad nicht welcher) die Funktion "externalize strings" auswählen, welches einem die Arbeit eine solche Datei im Nachhinein zu erstellen, erleichtert. Viele Grüße, zimon |
Anmeldungsdatum: Beiträge: 2159 |
Das ist ein einfacher kleiner Weg es selber zu machen. Ist aber für eine vernünftige Übersetzung etwas unbrauchbar. In der Regel zeigt ein Programm auch Werte/Daten an wo Sachen interpoliert werden. Sprich nicht nur feste sätze sondern mit Variablen. z.B. "Es ist eine neue Nachricht im Posteingang" Hier musst du also die anzahl der nachrichten hereinbringen, und beachte dann noch den Unterschied zwischen Singular und Plural. Es ist also in der Regel nicht nur ein Satz auswählen sondern mit letze Sprachlichen barrieren wie Singular und Plural musst du dich auch mit auseinander setzen. "gettext" wurde hier schon erwähnt und macht solche ersetzung etwas besser als ein einfach array. Ansonsten muss man bedenken das nicht jeder Übersetzer automatisch ein Programmierer ist, und ihn irgendwelchen Quellcode zuschicken wo irgendwelche "assoziativen Arrays" drin sind, für welche Sprache auch immer ist nicht wirklich elegant. gettext hat ein eigenes Dateiformat und kann z.B. ausgetauscht werden, und hier können auch Nicht Programmierer helfen indem sie Programm wie poedit nutzen und so bei der Lokalisierung helfen können. Von daher sind solche Sachen wie gettext zu bevorzugen. Ansonsten sollte er auch sagen um welche Programmiersprache es geht. Jede Sprache kann evtl. nochmal eigene bevorzugte Frameworks haben um diese aufgabe zu lösen. |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 115 Wohnort: Gerasdorf bei Wien |
user unknown schrieb:
Ja, Java |
![]() Anmeldungsdatum: Beiträge: 17622 Wohnort: Berlin |
Hilft Dir das 🇬🇧 http://java.sun.com/docs/books/tutorial/i18n/ weiter? |