Einzelnen Beitrag anzeigen

Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Anwendung mit Resourcestring mehrsprachig, aber wie?

  Alt 22. Jul 2006, 18:12
Hi,

aaalso:

Du entwickelst deine Anwendung erst einmal ganz normal ohne dich um die Sprachproblematik zu kümmern.

Ich entwickle immer alles in Englisch und zwar aus dem ganz einfachen Grund, weil ich ein englisches Delhi habe und bei den meisten Komponenten/Bibliotheken alle Meldungen auch in englisch gehalten sind. So habe ich eine konsistente Ausgangsbasis.

Dann scannst du mit GNUGettext deinen Source und erhälst eine PO-Datei. Diese kopierts du in jeweils ein Verzeichnis pro Sprache (z.B. <PROGRAMMVERZEICHNIS>\locale\LC_MESSAGES\DE für Deutsch).

Die PO-Dateien werden dann mit (z.B.) POEdit in die gewünschte Zielsprache übersetzt. Beim Speichern entsteht automatisch die MO-Datei.

Wenn das Programm auf einem Deutschen Windows läuft und eine MO-Datei für Deutsch vorhanden ist, so wird dxGetText automatisch alles in Deutsche übertragen wenn "TrnaslateComponent(Self)" ausgeführt wird.

Wenn das Programm verschiedene Sprachen unterstützen soll, so muss für jede Sprache ein Verzeichnis mit der übersetzten MO-Daatei existieren. Im Programm kann durch den Aufruf von "UseLanguage(<SPRACHCODE>)" vor dem "TranslateComponent()" die Sprache bestimmt werden. Wenn das Programm also also auf Spanisch laufen soll so wird folgendes augefrufen:

Delphi-Quellcode:
UseLanguage('ES');
TranslateComponent(Self);
Der Parameter bei "UseLanguage" ist immer der ISO-Code der Sprache. Das Verzeichnis in "locale" muss genauso benannt sein.

Findet dxGetText die jeweilige Sprache nicht so tut es einfach: nichts. Das Programm erscheint dann so wie es in Delphi erstellt wurde (also z.B. in Englisch). Das macht es sehr einfach neue Sprachen hinzuzufügen ohne das Programm neu zu erstellen, also z.B. auf dem Rechner des Benutzers durch einen Download neuer Sprachdateien.

Ich hoffe das hilft erst einmal ein wenig weiter,

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat