![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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