ubuntuusers.de

Sprachunterstützung

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

ubuntu810

Avatar von ubuntu810

Anmeldungsdatum:
17. März 2009

Beiträge: 115

Wohnort: Gerasdorf bei Wien

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?

Maduser

Avatar von Maduser

Anmeldungsdatum:
3. Mai 2005

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.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

ubuntu810 schrieb:

Weiß jemand, wie das normalerweise gemacht wird?

Mit Java: Ja. Hast Du eine spezielle Sprache im Auge?

zimon23

Avatar von zimon23

Anmeldungsdatum:
8. Dezember 2007

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

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

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.

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"
"Es sind zwei neue Nachrichten im Posteingang"
"Es sind 13 neue Nachrichten 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.

ubuntu810

(Themenstarter)
Avatar von ubuntu810

Anmeldungsdatum:
17. März 2009

Beiträge: 115

Wohnort: Gerasdorf bei Wien

user unknown schrieb:

ubuntu810 schrieb:

Weiß jemand, wie das normalerweise gemacht wird?

Mit Java: Ja. Hast Du eine spezielle Sprache im Auge?

Ja, Java

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Hilft Dir das 🇬🇧 http://java.sun.com/docs/books/tutorial/i18n/ weiter?

Antworten |