German Bestehende App zweisprachig

so27

Active Member
Licensed User
Longtime User
Hallo und guten Morgen zusammen,

weiß jemand, wie ich eine bestehende App, mit möglichst wenig Aufwand, eine andere Sprache zuteilen bzw. diese Mehrsprachig machen kann?

Gruß, so27
 

klaus

Expert
Licensed User
Longtime User
... mit möglichst wenig Aufwand ...
Das kommt darauf an wie Dein Programm aufgebaut ist.
Und was verstehst Du mit wenig Aufwand ?
Du musst alle Texte der verschiedenen Sprachen irgendwo speichern und diese dann je nach Sprachwahl ins Programm lesen oder diese im Sourcecode direkt einbinden.
Dann musst Du überall wo Du Text verwendest diesen ändern wenn der Benutzer die Sprache ändert, das Gleiche auch beim Programmstart.
In meinen Programmen mache Ich es relatif einfach. Ich habe für jede Sprache eine Textdatei, je nach Sprachwahl lese ich die geeignente Datei in ein String-Array.
Dann überall wo Text im Code eingegeben wird verwende Ich zum Beispiel:
lblTitel.Text = Texte(10) anstatt lblTitel.Text = "Titel"
Für Text der im Designer eingegebn ist musst Du eine Routine pro Activity schreiben die Alle Texte ändert.
Ich mache es so schon seit langer Zeit auch in Windows Programmen deshalb habe Ich nie nach einer anderen Lösung gesucht.
Ein Beispiel findest Du hier Simple NotePad.

Man kann das Alles natürlch auch anders machen.
Die Sprachen in Maps oder in einer Datenbank speichern.

Du könntest auch die AHLocale Library von corwin42 verwenden.
Diese Library stellt eine Funktion AHTranslator zur Verfügung zum erstellen von mehrsprachigen Programmen.
Ich habe diese aber noch nie benutzt.
Man mit dieser Library kann man auch die Sprache die am Gerät eingestellt ist auszulesen und diese dann beim Programmstart auswählen, diese Funktion verwende Ich.

Beste Grüsse.
 

so27

Active Member
Licensed User
Longtime User
Danke, dass mit den verschiedenen Dateien pro Sprache und dem Auslesen in Arrays ist eine gute Lösung. Die werde ich umsetzen.

Gruß, so27
 

GMan

Well-Known Member
Licensed User
Longtime User
Ich habe das ebenfalls mit map-dateien gemacht und das funktioniert prima.

Eine einfache Abfrage in der App beim Start liest die Einstellung (Vorgabe Deutsch) aus.
Wenn eine andere Sprache gewählt wird/wurde, wird überall da, wo Text wichtig st eine einfache Abfrage durchgeführt:

B4X:
If AppLanguage = "1" Then ' EN = 0, DE = 1 usw.

Der Aufwand im Programm ist rel. einfach, aber natürlich musst Du alle Titles & Texte übersetzen.
Wenn Anzeigetext aus einer Datei ausgelesen wird: es gibt pro Sprache eine solche Datei, lediglich mit einer anderen Endung.

Auch da hilft dann eine einfache Abfrage, um die Endung des Files festzulegen:

B4X:
If AppLanguage = "1" Then
Dateiendung = ".de"
End if

If AppLanguage = "1" Then
Dateiendung = ".uk"
End if

Heisst die Datei nun Beispiel (reine Textdatei) wird so geladen:
B4X:
Label1.text = File.Read(File.DirInternal,"Beispiel" & Dateiendung))
 
Last edited:

so27

Active Member
Licensed User
Longtime User
Danke. Ich habe auch schon angefangen die Übersetzung in eine Map-Datei zu packen. Die eignet sich hervorragend dafür.
 
Top