![]() |
GNUGetText Retranslate
Hallo,
vielleicht bin ich zu blöd (was durchaus in Betracht kommen könnte) aber ich bekomm das RetranslateComponent beim GnuGetText einfach nicht zum Laufen... D2009 Architect Vista Ultimate Sp1 alle Updates Eng.[b] Also Im FormOnCreate mach ich:
Delphi-Quellcode:
So, jetzt würde ich gerne dem Benutzer die Möglichkeit geben im Programm während der Laufzeit die Sprache zu wechseln (ich hab mal 2 TImages mit ner Flagge als Grafik auf die Form gepappt)
UseLanguage('de');
TranslateComponent(self); Im OnClick der TImages mach ich dann:
Delphi-Quellcode:
Folge: Null Auswirkung auf die GUI, also die Sprache wird nicht gewechselt sämtliche Komponenten haben weiterhin die Sprache die im FormOnCreate gesetzt wurde...
UseLanguage('en');
ReTranslateComponent(self); Edit: Ich hab ResourceStrings benutzt! Öhm kennt jemand das Problem bzw. wie kann man das Lösen? Gruß s! |
Re: GNUGetText Retranslate
Also theoretisch ist dein Ansatz korrekt. Ich hab´s exakt so in meinem Projekt und bei geht´s. Sowohl diverse Caption-Properties als auch resourcestrings, die ich in einer Extra-Unit dafür deklariert habe, werden übersetzt. Ist auch mit den Language-Files alles kokrrekt? ( Unterpfad Locale\en\LC_MESSAGES\default.mo )?
|
Re: GNUGetText Retranslate
Zitat:
Ich hab mal eine Virable Declariert Typ Boolean im FormOnCreate hab ich nichts eingestellt also keine UseLanguage oder TranslateComponent nur folgendes: firstTranslation := true; Dann bei der TImageOnlick:
Delphi-Quellcode:
Dann switched er auf Englisch, wenn ich aber nun auf eine andere Sprache will also erneuter wechsel kommt folgendes:
UseLanguage('en');
if (firstTranslation) = false then RetranslateComponent(self) else translateComponent(self); "This application tried to switch the language, but in an incorrect way. The programmer needs to replace a call to TranslateComponent with a call to RetranslateComponent(). The programmer should see the changelog of gnugettext.pas for more information." So nun bin ich völlig verwirrt, weil wenn ich im FormOnCreate nun folgendes machen würde:
Delphi-Quellcode:
Und dann halt im TImage:
UseLanguage('de');
TranslateComponent(Self); firstTranslation := False;
Delphi-Quellcode:
Passiert gar nix nicht mal eine Fehlermeldung die Sprache bleibt wie sie in der FormCreate gesetzt wurde !
UseLanguage('en');
if (firstTranslation) = false then RetranslateComponent(self) else translateComponent(self); Ich hab mir gerade mal per ShowMessage unter dem TImageClick die CurrentLanguage anzeigen lassen, diese wird korrekt geswitched z.B. für Englisch = en also scheint das Problem ggf. am ReTranslateComponent zu liegen... Vielleicht nen Fehler in der GnuGetText für D2009? |
Re: GNUGetText Retranslate
Zitat:
Dass bei dir aber ansonsten gar nichts übersetzt wird, wundert mich auch. Hast du mal in der gnugettext.pas den Debug-Mode aktiviert und dir das Log in eine Datei schreiben lassen? Vielleicht wirst du ja daraus schlauer, ob er überhaupt versucht, irgendwas zu tun. Such ggf. nach
Delphi-Quellcode:
...da solltest du alle nötigen Infos finden.
{ $define DXGETTEXTDEBUG}
Bin mal auf die Auflösung gespannt, wenn es denn eine gibt. Bis denn Bommel |
Re: GNUGetText Retranslate
Zitat:
RetranslateComponent() was called for a component with name lblInfo. The language has not changed. The retranslator is not executed. Das gabs an Info im DebugLog |
Re: GNUGetText Retranslate
Die Fehlermeldung kommt bei mir auch, wenn ich zweimal hintereinander TranslateComponent aufrufe. Nach dem allerersten TranslateComponent sollten fortan nur noch ReTranslate Aufrufe stattfinden. Ich denk mal, du setzt firstTranslation nicht auf false.
Ein TranslateComponent muss auch als erstes erfolgen, sonst funktionieren alle weiteren ReTranslate Aufrufe nicht. Ups, zu langsam getippt :roll: |
Re: GNUGetText Retranslate
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich häng mal das gesamte Debug File mit rein? Vielleicht hilfts ja Mannnnnnnn! Problem gelöst! FormOnCreate Old
Delphi-Quellcode:
FormOnCreate New
UseLanguage('de');
TranslateComponent(self);
Delphi-Quellcode:
TImageOnLick
UseLanguage('de');
TranslateComponent(lblInfo); TranslateComponent(btnPatch); TranslateComponent(mmLog); firstTranslation := false;
Delphi-Quellcode:
So gehts wunderbar :-)
UseLanguage('en');
ReTranslateComponent(lblInfo); ReTranslateComponent(btnPatch); ReTranslateComponent(mmLog); |
Re: GNUGetText Retranslate
Aber irgendwas ist da schon komisch. Denn jetzt rufst du ja für jedes einzelne Element deines Formulars ein Retranslate auf. Das geht natürlich, ist aber ja eigentlich nicht so ganz im Sinne des Erfinders. Eigentlich wundert es mich sogar, dass es funktioniert, denn:
Code:
Bei dir ist aus irgendeinem Grund die Domain verstellt, wenn du das Retranslate ausführst. In meinen Projekten ist die immer "default", die entsprechende default.mo wird dann von gnugettext benutzt. Bei dir ist diese Domain aber plötzlich "de", obwohl du wahrscheinlich auch nur eine "default.mo" haben wirst. Wieso diese Domain bei dir umgestellt ist, ist mir allerdings noch nicht ganz klar, ggf. kommt das ja durch die Ressourcestrings? Ist aber nur geraten. ;)
RetranslateComponent() was called for a component with name lblInfo.
The retranslator is being executed. Domain de: File does not exist, neither embedded or in file system: C:\Dokumente und Einstellungen\Admin\Desktop\Blub\Ie7_Acro_Patch\locale\en\LC_MESSAGES\de.mo Domain de will attempt to use this file: C:\Dokumente und Einstellungen\Admin\Desktop\Blub\Ie7_Acro_Patch\locale\en\LC_MESSAGES\de.mo Domain de failed to locate the file: C:\Dokumente und Einstellungen\Admin\Desktop\Blub\Ie7_Acro_Patch\locale\en\LC_MESSAGES\de.mo .mo file is not open. Not translating "Dieser Patch behebt das bekannte Problem, dass sich der Internet Explorer 7 nicht nachträglich installieren läßt, wenn Sie Windows XP mit SP3 verwenden oder Windows XP SP2 und installiertem Acrobat Reader 9 " .mo file is not open. Not translating "Tahoma" Naja, es funktioniert ja auch so bei dir, aber dennoch würde ich an deiner Stelle noch mal weitersuchen, denn deine Methode ist ja doch aufwendig und fehleranfälig, falls immer mehr und mehr Komponenten auf dem Formular hinzukommen... Bis denn Bommel |
Re: GNUGetText Retranslate
Zitat:
Gruß Marc |
Re: GNUGetText Retranslate
Zitat:
Bis denn Bommel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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-2025 by Thomas Breitkreuz