![]() |
MessageBox mit GNU Gettext übersetzen?
Hallo,
ich übersetze gerade mein Programm mit dem GNU Gettext und komme auf ein mal nicht weiter, da die MessageBox Meldungen sich mit diesem Tool nicht übersetzen lassen. Also in der .po Datei sind die Meldungen für das Übersetzen nicht dabei. Wieso eigentlich? Wer kann mir weiter helfen? Danke! |
Re: MessageBox mit GNU Gettext übersetzen?
Nutzt du dxgettext, um GNU Gettext zu benutzen?
Und wie rufst du die MessageBox auf? Die Meldungen, die dort angezeigt werden soll, muss ja in der Übersetzungsfunktion "_" stehen, sonst klappt das natürlich nicht. Zeig am besten mal ein bisschen Code zum Problem. Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Zitat:
Delphi-Quellcode:
if ListBox1.ItemIndex=-1 then
begin Application.MessageBox('Please select a channel!', 'Error', 16); Exit; end; |
Re: MessageBox mit GNU Gettext übersetzen?
dxgettext ist halt nicht GNU Gettext, sondern eine Umsetzung von gettext für Delphi. Du kannst es dir ja
![]() Ich weiß ja nicht, wie das dann bei GNU Gettext läuft - mir ist hier damals dxgettext empfohlen worden, insofern habe ich mich mit GNU dann nicht beschäftigt. Unabhängig davon ist aber ja das Prinzip das gleiche, also müsste es doch in deinem Code statt
Delphi-Quellcode:
eigentlich
Application.MessageBox('Please select a channel!', 'Error', 16);
Delphi-Quellcode:
heißen, oder?
Application.MessageBox(_('Please select a channel!'), _('Error'), 16);
Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Also ich hab mir dxgettext-1.2.2.exe runtergeladen. Ich dachte das ist GNU Gettext, steht ja oben auf der Webseite.
Zitat:
|
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Hast du die Unit "gettext" eingebunden? Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Delphi-Quellcode:
[Fehler] Unit1.pas(1173): Inkompatible Typen: 'WideString' und 'PAnsiChar'
Zitat:
![]() |
Re: MessageBox mit GNU Gettext übersetzen?
Jo, die Unit ist gnugettext, nicht gettext - war auf die Schnelle mein Fehler.
Ansonsten versuch es mal mit einer Typ-Umwandlung, etwa so:
Delphi-Quellcode:
So sollte es eigentlich gehen. Oder nimm eine der Funktionen für eine Dialogbox, die direkt mit Strings in den Parametern arbeiten, zum Beispiel MessageDlg.
Application.MessageBox(PAnsiChar(_('Please select a channel!')), PAnsiChar(_('Error')), 16);
Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Hab jetzt folgende Warnung, ist das nicht schlimm?
Delphi-Quellcode:
Und die Meldung wird nicht richtig ausgegeben, nur erste Buchstaben des Wortes.
[Warnung] Unit1.pas(1175): Bedenkliche Typumwandlung von WideString in PAnsiChar
|
Re: MessageBox mit GNU Gettext übersetzen?
Oh je. :)
Sorry, diese Probleme kann ich bei mir nicht nachstellen, da ich D2009 habe, da braucht die MessageBox-Funktion ein PWideChar statt eines PAnsiChar, da ist dann alles in Ordnung. Klar, dass das so Probleme gibt - damit Delphi eine Chance hat, müsstest du wohl aus dem Widestring zuerst noch einen String machen, dann sollte es gehen. Aber, wie gesagt, ich würde dir alternativ folgenden Code vorschlagen:
Delphi-Quellcode:
Dann sollten diese lästigen Umwandlungen automatisch funktionieren.
MessageDlg(_('Please select a channel!'),mtError,[mbOk],0);
Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Ja das klappt :thumb:
Ok danke dir erst mal, werde jetzt weiter übersetzen. :-D |
Re: MessageBox mit GNU Gettext übersetzen?
Alternativ könntest du auch MessageBoxW verwenden. Diese will PWideChars.
Delphi-Quellcode:
MfG
MessageBoxW(..., PWideChar(_('...')),...);
xZise |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Jetzt habe ich aber noch ein Problem, Labelx.Caption lassen sich nicht übersetzen wenn diese im Code zugewiesen wurd, z.B.
Delphi-Quellcode:
Wie soll das in der .po auftauchen?
Label1.Caption:='Hallo';
|
Re: MessageBox mit GNU Gettext übersetzen?
Etwa so?
Delphi-Quellcode:
Label1.Caption:=_('Hallo');
|
Re: MessageBox mit GNU Gettext übersetzen?
Genau so! Es wird der Code nach den Aufrufen von _() gesucht und in die *.po aufgenommen.
MfG xZise PS: Es wird hier ungerne gesehen nach einigen Minuten einen Doppelpost zu posten :P Benutze stattdessen die edit-Funktion. |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Wie kann ich eigentlich neue Strings in die .po dazufügen? Immer eine neue erstellen und wieder übersetzen ist doch Quatsch, oder? |
Re: MessageBox mit GNU Gettext übersetzen?
Guck dir die *.po mal mitm Texteditor an. ;) Aber ich find das automatische erstellen recht bequem... :)
|
Re: MessageBox mit GNU Gettext übersetzen?
Du sicherst deine Übersetzung und führst dann beide Versionen zusammen ;)
MfG xZise |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
|
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
|
Re: MessageBox mit GNU Gettext übersetzen?
Wenn du dxgettext und alle seine Tools komplett installiert hast, dann solltest du im Windows Explorer bei einem Klick mit der rechten Maustaste auf eine .po-Datei im Kontextmenü den neuen Menüpunkt "Merge templates" finden. Unter "Übersetzungsdatei" sollte dann die Datei stehen, in der schon Übersetzungen drin sind, unter "Übersetzungsschablone" die neue, noch nicht übersetzte .po-Datei.
Nach kurzer Zeit erhälst du dann eine .po-Datei mit den bisherigen Übersetzungen und den neuen, noch nicht übersetzten Texten. Steht auch ![]() Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Ok danke, hab das gemacht. :thumb:
|
Re: MessageBox mit GNU Gettext übersetzen?
Jetzt habe ich noch eine kleine Frage, wie erkenne ich welche Sprache nun geladen wurde? Das brauche ich um im Menü die jeweilige Sprache als Checked zu markieren.
Hab mir die Doku von Gettext an geguckt, aber sie ist sooooooooo groß, ich kann kaum Englisch und weiß gar nicht nach was ich suchen soll. |
Re: MessageBox mit GNU Gettext übersetzen?
Die Funktion GetCurrentLanguage liefert dir einen String zurück, der die gerade aktive Sprache angibt.
In der Doku findest du es ![]() Bis denn Bommel |
Re: MessageBox mit GNU Gettext übersetzen?
Mit der Funktion GetCurrentLanguage bekomme ich aber nur die Sprache des Windows und nicht mit welcher Sprache gerade das Prog läuft. :gruebel:
Bei mir liefert also die Funktion immer "de_DE" zurück, egal in welcher Sprache man das Prog öffnet. |
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
|
Re: MessageBox mit GNU Gettext übersetzen?
Lies ma bitte das ganze Thema durch, dass mit dem "hallo" wurde schon längst geklärt. :roteyes:
|
Re: MessageBox mit GNU Gettext übersetzen?
Ja aber erst nach dem man dir wiederholt erklärt hat, wie gnuGettext funktioniert. Das meinte ich.
|
Re: MessageBox mit GNU Gettext übersetzen?
Zitat:
Daher frage ich mich halt, wie du überhaupt bisher die Sprache setzt. Abschließend will ich aber auch noch mal Luckie unterstützen: Die Doku solltest du dir dringend mal anschauen. Du hast ja gesagt, du kannst nicht so gut Englisch, vielleicht solltest du dir die Anleitung dann mal mit Hilfe von ![]() Bis denn Bommel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 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