AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessageBox mit GNU Gettext übersetzen?

Ein Thema von AlexII · begonnen am 25. Aug 2009 · letzter Beitrag vom 31. Aug 2009
Antwort Antwort
Seite 1 von 3  1 23      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 16:41
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!
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#2

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 16:51
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
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 16:55
Zitat von Bbommel:
Nutzt du dxgettext, um GNU Gettext zu benutzen?
Wozu ist das gut? Nein ich nutze das nicht.


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;
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#4

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:07
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
Application.MessageBox('Please select a channel!', 'Error', 16); eigentlich
Application.MessageBox(_('Please select a channel!'), _('Error'), 16); heißen, oder?

Bis denn
Bommel
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:11
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.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#6

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:16
Zitat von AlexII:
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
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:23
Zitat von Bbommel:
Zitat von AlexII:
Application.MessageBox(_('Please select a channel!'), _('Error'), 16); Ne das geht nicht.
Inwiefern geht das nicht? Fehlermeldungen?
Bekomme ne Fehlermeldung:

[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.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#8

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:31
Jo, die Unit ist gnugettext, nicht gettext - war auf die Schnelle mein Fehler.

Ansonsten versuch es mal mit einer Typ-Umwandlung, etwa so:
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
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

Re: MessageBox mit GNU Gettext übersetzen?

  Alt 25. Aug 2009, 17:34
Hab jetzt folgende Warnung, ist das nicht schlimm?

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

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#10

Re: MessageBox mit GNU Gettext übersetzen?

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

Bis denn
Bommel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
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