AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

gnu gettext und Dialoge

Ein Thema von schwarzerlotus · begonnen am 30. Dez 2011 · letzter Beitrag vom 2. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2   
schwarzerlotus

Registriert seit: 25. Jul 2011
18 Beiträge
 
#1

gnu gettext und Dialoge

  Alt 30. Dez 2011, 09:19
Hallo zusammen,

ich beschäftige mich gerade mit gnu gettext, um unsere bestehende Applikation in mehrere Sprachen übersetzten zu können.

Nachdem ich das ganze mit Ausnahmen und Ignorelisten etwas durchdrungen habe, bin ich auch ganz zufrieden damit - was mir jedoch noch Kopfschmerzen bereitet sind die Dialoge. Wir benutzten zum einen die ganz normalen Open und Save Dialoge aber auch den FolderDialog von TMS. Wenn ich den Programmordner scanne und mir die po Datei erzeugen lasse, findet er nur die Texte dich ich direkt auf meinen Forms drauf habe aber z.B. nicht die Buttonbeschriftungen der Dialoge also OK, Abbrechen und Neuer Ordner usw.

Beim Titel der Dialoge kann ich ja noch den Inhalt mit setTitle angeben aber mit den Buttons klappt das leider nicht.

Ich hab beim Suchen im Forum die Aussagen gefunden, dass sich diese Texte mit der Windowssprache ändern? Es wäre aber auch super alle Texte der Applikation unabhängig von der eingestellten Windowssprache zu ändern.

Hat jemand eine Idee wie man das hin bekommt? Vielleicht, dass man die Texte die man noch zusätzlich benötigt in irgendeiner Form zusätzlich an gettext liefert?

Wir arbeiten im Moment noch mit Delphi 7 portieren das ganze aber gerade auf XE2; dxgettext 1.2.2; Windows Vista und Win7

Schon mal vielen Dank

Maick
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)
Online

Registriert seit: 29. Mai 2002
34.681 Beiträge
 
Delphi 2006 Professional
 
#2

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 09:26
Das sind ja Windows interne Dialoge, die du nur aufrufst. Damit ist deren Sprache auch von der Windows Sprache abhängig, da die Texte natürlich aus den Ressourcen von Windows kommen. Aber eine kurze Suche mit Google liefert eine Lösung für dein Problem: GnuGetText und MessageBox Das bezieht sich zwar auf die Messagebox von Windows, sollte aber auch auf die anderen Standardialoge von Windows anwenden lassen.
Michael
"Every language has an optimization operator. In Delphi that operator is: //"
  Mit Zitat antworten Zitat
Benutzerbild von Furtbichler
Furtbichler

Registriert seit: 19. Okt 2011
477 Beiträge
 
#3

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 10:12
Na ja, in der von dir gezeigen Lösung wird das Problem eher umgangen, denn Gott-sei-Dank hat die VCL eine eigene Messagebox, die man also übersetzen kann. Bei den Dateidialogen sieht das aber schlecht aus.

Ich könnte mir aber vorstellen, das man nachträglich etwas reinimpfen könnte, indem man die Controls mit EnumChildWindows sucht. Das müsste man aber je nach Windows-Version individuell anpassen und dann ist es auch nicht garantiert, as es läuft.
In der Tat.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)
Online

Registriert seit: 29. Mai 2002
34.681 Beiträge
 
Delphi 2006 Professional
 
#4

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 10:17
Was verstehst du jetzt unter "reinimpfen"?
Michael
"Every language has an optimization operator. In Delphi that operator is: //"
  Mit Zitat antworten Zitat
schwarzerlotus

Registriert seit: 25. Jul 2011
18 Beiträge
 
#5

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 10:27
@Luckie

ich hab das mal mit einem MessageDialog ausprobiert aber auch wenn ich eine Delphi7 Übersetzungsdatei hinzufüge und auf Englisch wechsle bleibt die Sprache der Buttons in dem Dialog Deutsch.

AddDomainForResourceString ('delphi7');
TranslateComponent (self);

Dialogs.CreateMessageDialog('Test', mtInformation , [mbOk, mbCancel, mbRetry]);

Wäre zur Not eine Idee wenns klappt, aber ich würde ungern alle Open Save und eben diesen FolderDialog von TMS austauschen.

@Furtbichler

die VCL Messagebox würde dann direkt übersetzt wenn man eine delphi.po/mo Übersetzung mit einbindet? Kann man sich diese po Dateien auch für XE2 selber erstellen und dann die Texte übersetzen?

Und für die Dialoge gibt es sonst keine praktikable Lösung wie man das mit gettext hinbekommen könnte - kann doch eigentlich nicht sein, dass man dort so an die Betriebssystem Sprache gebunden ist und keine Übersetzungsdateien nutzen kann oder???
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)
Online

Registriert seit: 29. Mai 2002
34.681 Beiträge
 
Delphi 2006 Professional
 
#6

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 10:33
Messagebox nicht MessageDialog! Der MessageDialog ist wieder was VCL eigenes.
Michael
"Every language has an optimization operator. In Delphi that operator is: //"
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
17 Beiträge
 
Delphi 2005 Professional
 
#7

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 10:36
Klemme folgende Prozedur an das OnShow-Ereignis des Open-Dialogs:

PROCEDURE TShellForm.OpenDialogShow(sender:TObject);
VAR
hwnd: THandle;

BEGIN
WITH OpenDialog
DO BEGIN
hwnd := GetParent(Handle);
SetDlgItemText(hwnd,1,PChar(TextOf('Open')));
SetDlgItemText(hwnd,2,PChar(TextOf('Cancel')));
SetDlgItemText(hwnd,1038,PChar(TextOf('Help')));
SetDlgItemText(hwnd,1089,PChar(TextOf('FileType')) );
SetDlgItemText(hwnd,1090,PChar(TextOf('FileName')) );
SetDlgItemText(hwnd,1091,PChar(TextOf('Searchin')) )
END
END; {OF PROCEDURE TShellForm.OpenDialogShow}

Die Funktion TextOf liefert den von der eingestellten Sprache abhängigen Wert, der z.B. in der Ressourcen-Datei abgelegt werden kann. Ähnlich funktioniert das für den Save-Dialog.
  Mit Zitat antworten Zitat
schwarzerlotus

Registriert seit: 25. Jul 2011
18 Beiträge
 
#8

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 11:28
@Sailor

das schaut gut aus Ich hab das noch etwas abgewandelt, da er bei mit TextOf nicht gefunden hat.

SetDlgItemText(hwnd,1,PChar(gettext('Open')));

so legt gettext das nun in der .po Datei ab und ich kann es übersetzten

@Lucki

ok MessageBox probier ich gleich nochmal aber auf der andren Seite - wenn MessageDialog aus der VCL stammt und ich eine eigentlich komplette delphi7 Übersetzungsdatei habe

http://dybdahl.dk/dxgettext/translations/

und die auch hinzufüge - warum wird es dann trotzdem nicht übersetzt
  Mit Zitat antworten Zitat
schwarzerlotus

Registriert seit: 25. Jul 2011
18 Beiträge
 
#9

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 11:59
ok es muss so sein, sonst bekommt man nur das erste Zeichen dargestellt

SetDlgItemText(hwnd,1,PChar(String(gettext('Open') )));
  Mit Zitat antworten Zitat
Benutzerbild von Furtbichler
Furtbichler

Registriert seit: 19. Okt 2011
477 Beiträge
 
#10

AW: gnu gettext und Dialoge

  Alt 30. Dez 2011, 12:02
Was verstehst du jetzt unter "reinimpfen"?
Na das...
Klemme folgende Prozedur an das OnShow-Ereignis des Open-Dialogs:.
In der Tat.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2012 by Daniel R. Wolf