![]() |
Zwischen Sprachen umschalten?
Hallo,
hab mein Programm mit GNU Gettext übersetzt. Welche Übersetzung aber eingeschaltet wird richtet sich nach der Sprache des Windows. Möchte es aber so machen, dass der User zwischen den Sprachen im Programm selber wählen kann, wie funktioniert das? :gruebel: |
Re: Zwischen Sprachen umschalten?
Vor dem TranslateComponent(Self):
UseLanguage('<ISOCODE>'); also z.B: UseLanguage('de-DE'); Die zu der Sprache gehörenden PO (bzw. MO) Dateien müssen natürlich im jeweiligen Sprachverzeichnis vorhanden sein. |
Re: Zwischen Sprachen umschalten?
Für DXGettext gibt es da einige
![]() Hinweis: Die Links auf der Seite sind veraltet, aber das Projekt "cnxmanager" ist immer noch auf Sourceforge zu finden und das Sourcepackage dazu enthält die beschrieben Dateien auch. Und noch eine Warnung: Controls die dynamisch zur Laufzeit erstellt werden und auch wieder verschwinden können, bringen dxgettext in Schwierigkeiten. Der Grund: Der erste Aufruf zur Übersetzung (TranslateComponent()) legt eine Liste der Controls mit den ursprünglichen Texten an. Wenn man danach die Sprache ändert, muss man mittels Aufruf von RetranslateComponent() die neuen Texte abrufen. Dabei wird die zuvor angelegte Liste benutzt. Wenn also zwischen den Aufrufen Controls hinzukommen, werden die nicht übersetzt (es sei denn man ruft nach der Erzeugung explizit gleich TranslateComponent(MeinNeuesControl) auf), aber viel schwerwiegender: Wenn Controls zwischen den Aufrufen abgeräumt werden, gibts Access Violations (im besten Falle), im schlimmsten Falle wird irgendwo Speicher zerstört und man sucht sich einen Wolf nach ganz seltsamen Problemen im Programm. |
Re: Zwischen Sprachen umschalten?
Zitat:
Delphi-Quellcode:
procedure TForm1.Deutsch1Click(Sender: TObject);
begin UseLanguage('de-DE'); TranslateComponent(Self); end; procedure TForm1.Englisch1Click(Sender: TObject); begin UseLanguage('en-EN'); TranslateComponent(Self); end; |
Re: Zwischen Sprachen umschalten?
Zitat:
|
Re: Zwischen Sprachen umschalten?
Zitat:
Du musst dir merken ob das Formular schon mal übersetzt wurde. NUr beim ersten Mail verwendest du "TranslateComponent()". Bei allen folgenden Malen verwendest du "ReTranslateComponent()"! Ansonsten reicht auch ein "UseLanguage('de')" wenn ein Sprachverzeichnis "DE" vorhanden ist (der Parameter von "UseLanguage" gibt letztendlich an in welchen Verzeichnis sich die MO Datei befindet. Du musst als nicht füe Deutsch-Östereich, Deutsch-Schweiz, Deutsch-... alle MO Dateien mitliefern. Es reicht wen ein Verzeichnis für "DE" existiert (es sei denn du hast in den verschiedenen Sprachvarianten unterschiedliche Formulierungen) |
Re: Zwischen Sprachen umschalten?
Hab das jetzt so:
Delphi-Quellcode:
Und wie speichere ich ab welche Sprache gewählt wurde? :gruebel:
UseLanguage('ru-RU');
ReTranslateComponent(Self); |
Re: Zwischen Sprachen umschalten?
Die Einstellung speichern kannst du wo du willst:
Inifile, Registry, Textdatei, XML-File,... ,schreibs auf einen Zettel und häng ihn an die Wand :mrgreen: Das Speichern der Einstellung hat nichts mit dxGetText zu tun, du speicherst nur einen String irgendwo ab (oder vieleicht auch nur den Index einer Combobox aus der die Sprache gewählt wurde, kommt auf dein Programm an) |
Re: Zwischen Sprachen umschalten?
Zitat:
|
Re: Zwischen Sprachen umschalten?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz