AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi gnugettext: keine Übersetzung falls vorher caption = ''
Thema durchsuchen
Ansicht
Themen-Optionen

gnugettext: keine Übersetzung falls vorher caption = ''

Offene Frage von "berens"
Ein Thema von berens · begonnen am 12. Jun 2007 · letzter Beitrag vom 21. Jun 2007
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

gnugettext: keine Übersetzung falls vorher caption = ''

  Alt 12. Jun 2007, 14:01
Hallo mal wieder!

Die Komponenten wollen sich nicht so recht nachträglich übersetzen lassen wenn übersetzbare Felder vor TranslateComponent leer sind.

Ich benutze Delphi 2007 und die aktuellste Version von dxgettext. Die .po Dateien sind alle da wo sie hingehören und wurden auch alle komplett und ordnungsgemäß Übersetzt und nach .mo kompiliert.

Ich habe eine TComponentlist, in der alle zu Übersetzenden Komponenten drinnen sind, die in eine for-i-Schleife mit gnugettext.RetranslateComponent(FComponentList[i]); erneut übersetzt.

Mit einem Trick funktioniert das auch, aber den will ich nicht verwenden, da der Aufwand dann fast wieder in keinem Nutzen steht.

Problem: Wenn die Komponenten mit gnugettext.RetranslateComponent(Self); in ihrem constructor Create übersetzt werden bevor alle übersetzbaren Eigenschaften wie Caption, Items, Strings (ja nach Komponente), funktioniert die Übersetzung nicht.

Funktioniert NICHT:
inherited Create --> gnugettext.TranslateComponent(Self);
--> Caption := 'Test' --> ... --> gnugettext.RetranslateComponent(Self);

Funktioniert:
inherited Create --> Caption := 'Test'
--> gnugettext.TranslateComponent(Self); --> ... --> gnugettext.RetranslateComponent(Self);

- Ich kann bei meinen eigenen Komponenten keinen "Standardwert" setzen und die dann mit gnugettext.TranslateComponent(Self) übersetzen, weil sonst immer bei RetranslateComponent(Self) die Übersetzung des Standardwertes kommt, und nicht die, die ich eigentlich in Caption drinnen haben will.

Achja: alle Komponenten werden zur Laufzeit erzeugt.

Wie macht Ihr das mit gnugettext? Habt Ihr auch das Problem oder kennt es zumindest?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: gnugettext: keine Übersetzung falls vorher caption = ''

  Alt 21. Jun 2007, 22:04
Wenn Du alle Komponenten zur Laufzeit erstellst, mach doch einfach Caption := _('Test') und lass das ganze ReTranslateZeug

Sven
Sven Harazim
--
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: gnugettext: keine Übersetzung falls vorher caption = ''

  Alt 21. Jun 2007, 22:11
Dann kann der Benutzer aber nicht zur Laufzeit die Sprache ändern... Aber wenn's nicht anders geht mache ich das so. thx.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: gnugettext: keine Übersetzung falls vorher caption = ''

  Alt 21. Jun 2007, 22:16
Eigentlich sollten

gnugettext.TranslateComponent(Self);
gnugettext.RetranslateComponent(Self);

nicht in jedem Komponenten-Create aufgerufen werden.

Erzeuge doch mal alle Komponenten im Form.OnCreate und rufe am Ende TranslateComponent(Self) auf, wobei self das Formular ist.

RetranslateComponent geht intern einfach eine Liste durch. Schau dir den Quelltext von gnugettext mal an, dann weisst Du wie es tickt.
Sven Harazim
--
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#5

Re: gnugettext: keine Übersetzung falls vorher caption = ''

  Alt 21. Jun 2007, 22:46
Hm, das ist natürliche eine gute Idee das beim ONCreate des Forms zu machen und nicht direkt beim Create, denn beim OnCreate ist das Form mit allen Componenten ja schon komplett erzeugt.

Werde ich bei Gelegenheit sofort ausprobieren, danke!
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:26 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