Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Android/iOS Apps in anderen Sprachen verfügbar machen (https://www.delphipraxis.net/213925-android-ios-apps-anderen-sprachen-verfuegbar-machen.html)

amigage 20. Okt 2023 10:13

Android/iOS Apps in anderen Sprachen verfügbar machen
 
Hallo,

aktuell stelle ich für Android und iOS Apps in deutscher Sprache bereit. Jetzt ist es so, dass vermehrt Fragen nach weiteren Sprachen - vor allem Englisch - kommen.
Also habe ich mich zumindest erst einmal unter Android kundig gemacht. https://developer.android.com/guide/...alization.html

Zusätzlich habe ich diverse Beiträge auf StackOverflow gelesen. So wie ich es verstanden habe, stellt man die String-Ressourcen in den entsprechenden Verzeichnissen bereit.

Code:
res/values/strings.xml
res/values-en/strings.xml
Diese binde ich im Bereitstellungs-Manager ein und lasse sie entsprechend mit in die apk kompilieren (wenn ich die apk als zip öffne, sehe ich auch die entsprechenden Dateien in den Pfaden).

Laut Anleitung von Android liest das System die eingestellte Systemsprache aus und soll dann die entsprechende strings.xml auslesen. Wenn die Sprache nicht vorhanden ist, wird auf die Standardsprache unter values zurückgegriffen und entsprechend in der App umgestellt und angezeigt.

Bei mir passiert aber nichts. Egal was ich mache, bei mir wird keine Sprachänderung durchgeführt? Ich würde auf externe Komponenten, wie TSILang verzichten wollen, da ich hier alle internen Strings selbst setzen muss. Wie macht ihr das?

Danke!

himitsu 20. Okt 2023 10:30

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
Ich weiß nicht, ob es für die Mobilen so stimmt, aber bezüglich Windows (dcc32 und dcc64) :

Original wird bei Delphi nur eine Sprache/SprachResource integriert,
außer man legt weitere SprachResourcen daneben. (z.B. die *.fr, *.de und *.jp der RTL/VCL/usw.)

Und was der Compiler dann einbaut, entscheidet C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\BDSSetLang.exe
* erster Tab = wie die Delphi angezeigt wird
* zweiter Tab = was der Compiler/Linker in die Compilate einbaut


im Windows:
* Theoretisch ginge es auch, diese Ressourcen zu integrieren (Resoucen haben ja jeweils eine eigene LCID).
* Es gibt dann noch verschiedene Übersetzungstools, welche sich ins Laden dieser Ressourcen reinhängen und dort dann dynamisch das zur Laufzeit überschreiben.

amigage 20. Okt 2023 15:23

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
Nein, für die mobilen Geräte funktioniert das leider so nicht.

paule32.jk 20. Okt 2023 16:10

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
ich hatte mir mal vor langer Zeit mal ein kleines Tool geschrieben, das .po Datei anlegen kann.
Dazu nutzte ich msgfmt, das ich mittels GNU C/C++ nutzen konnte.
Evtl. müsste ich mich auch mal die apk Erstellung anscheuen, um das Tool für solche Zwecke
braichbar zu machen.

Es steht auf meinen gitaccount

TurboMagic 21. Okt 2023 15:50

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
Eine von EMBT jedoch abgekündigte Möglichkeit stellt die FMX Komponente TLang dar.
Bis auf folgende Problem funktioniert das auch:

Der String Editor von TLang ist grauselig und kann nicht mit Multiline Strings umgehen.

Ich hatte dann Multilizer benutzt, welches die Strings der lng Dateien von TLang
verarbeiten konnte und mir somit die von VCL Anwendungen bereits bekannte
Übersetzungsoberfläche bereit stellt. Dort können auch bestimmte Wörterbücher
integriert werden um somit einen Teil der Texte automatisch übersetzen zu lassen
und wenn man mit Übersetzern arbeitet kann man denen eine Lite Umgebung generieren
lassen, was auch hilfreich ist, da Multilizer auch gewisse Syntaxprüfungen kann.
z. B. fehlerhafte Platzhalter erkennen usw.

Die Methode die strings.xml zu benutzen hatee ich schon mal in https://quality.embarcadero.com
eingespeist, passiert ist da aber trotz Anmerkung des Produktmanagers,
dass ihm meine Idee gefällt noch nix. Ich finde den Report nur leider auf die Schnelle nicht...

Grüße
TurboMagic

philipp.hofmann 21. Okt 2023 22:13

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
Also ich persönlich habe mir da mal eine eigene Lösung gebaut, da es am Ende ja nicht nur um die Betextung geht, sondern teilweise auch um Einheiten (z.B. Meilen statt Kilometer), mehrzeilige Texte und Texte mit Platzhaltern geht. Für jedes Text-Feld habe ich eine ID und ich liefere pro Sprache eine Datei mit allen IDs und allen Texten für diese Sprache aus.

Ich lese beim ersten Start der Software die Sprache aus und wähle aus den zur Verfügung stehenden Sprachen die beste aus. Diese ist dann in unserer Konfiguration überschreibbar man kann auch die Sprache "XX" auswählen, dann erscheinen in der App nur die IDs (falls man mal nicht weiß, was wo steht). Ich kann so zur Laufzeit in Sekundenschnelle auch die Sprache wechseln, wenn ich mir z.B. bei Größen nicht vollkommen sicher bin, ob es in allen Sprachen so passt.

Die Sprache-Datei ist extrem einfach austauschbar. Der Aufwand war der Programmierung war deutlich unter einem Tag, der eigentliche Aufwand ist die Übersetzung aller Elemente an sich.

paule32.jk 21. Okt 2023 23:12

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
klar. geht ja irgendwie immer um eine ID bei Android - egal ob das ein String oder Control ist.

juergen 21. Okt 2023 23:33

AW: Android/iOS Apps in anderen Sprachen verfügbar machen
 
Wenn es ein professionelles Tool sein soll und auch Geld kosten darf, wäre TsiLang einen Blick wert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz