Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MessageBox mit GNU Gettext übersetzen? (https://www.delphipraxis.net/139211-messagebox-mit-gnu-gettext-uebersetzen.html)

AlexII 25. Aug 2009 16:41


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!

Bbommel 25. Aug 2009 16:51

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

AlexII 25. Aug 2009 16:55

Re: MessageBox mit GNU Gettext übersetzen?
 
Zitat:

Zitat von Bbommel
Nutzt du dxgettext, um GNU Gettext zu benutzen?

Wozu ist das gut? Nein ich nutze das nicht.


Zitat:

Zitat von Bbommel
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.

Hier ein Beispiel:

Delphi-Quellcode:
if ListBox1.ItemIndex=-1 then
begin
Application.MessageBox('Please select a channel!', 'Error', 16);
Exit;
end;

Bbommel 25. Aug 2009 17:07

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 mal anschauen. Bringt eine Reihe von Tools und Funktionen mit, mit denen sich Forms recht leicht automatisiert übersetzen lassen. Weil es eben auch "gettext" ist könntest du auch deine .po-Dateien weiternutzen, falls das für dich interessant erscheint.

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:
Application.MessageBox('Please select a channel!', 'Error', 16);
eigentlich
Delphi-Quellcode:
Application.MessageBox(_('Please select a channel!'), _('Error'), 16);
heißen, oder?

Bis denn
Bommel

AlexII 25. Aug 2009 17:11

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:

Application.MessageBox(_('Please select a channel!'), _('Error'), 16);
Ne das geht nicht.

Bbommel 25. Aug 2009 17:16

Re: MessageBox mit GNU Gettext übersetzen?
 
Zitat:

Zitat von AlexII
Delphi-Quellcode:
Application.MessageBox(_('Please select a channel!'), _('Error'), 16);
Ne das geht nicht.

Inwiefern geht das nicht? Fehlermeldungen?

Hast du die Unit "gettext" eingebunden?

Bis denn
Bommel

AlexII 25. Aug 2009 17:23

Re: MessageBox mit GNU Gettext übersetzen?
 
Zitat:

Zitat von Bbommel
Zitat:

Zitat von AlexII
Delphi-Quellcode:
Application.MessageBox(_('Please select a channel!'), _('Error'), 16);
Ne das geht nicht.

Inwiefern geht das nicht? Fehlermeldungen?

Bekomme ne Fehlermeldung:

Delphi-Quellcode:
[Fehler] Unit1.pas(1173): Inkompatible Typen: 'WideString' und 'PAnsiChar'


Zitat:

Hast du die Unit "gettext" eingebunden?
Hab alles so gemacht wie hier steht, aber nicht "gettext" sondern "gnugettext". Also alles nach der Anleitung.

Bbommel 25. Aug 2009 17:31

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:
Application.MessageBox(PAnsiChar(_('Please select a channel!')), PAnsiChar(_('Error')), 16);
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.

Bis denn
Bommel

AlexII 25. Aug 2009 17:34

Re: MessageBox mit GNU Gettext übersetzen?
 
Hab jetzt folgende Warnung, ist das nicht schlimm?

Delphi-Quellcode:
[Warnung] Unit1.pas(1175): Bedenkliche Typumwandlung von WideString in PAnsiChar
Und die Meldung wird nicht richtig ausgegeben, nur erste Buchstaben des Wortes.

Bbommel 25. Aug 2009 17:49

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:
  MessageDlg(_('Please select a channel!'),mtError,[mbOk],0);
Dann sollten diese lästigen Umwandlungen automatisch funktionieren.

Bis denn
Bommel


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz