i18n bei eigenen Komponenten

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
FXMaveric
Beiträge: 19
Registriert: Mi 7. Jan 2009, 08:59

i18n bei eigenen Komponenten

Beitrag von FXMaveric »

Hallo,

ich versuche mein Program mittels PO Dateien und TPoTranslator (TranslateUnitResourceStrings) zu mutlilingualisieren.

Ich erzeuge den Translator im initialization - Abschnitt der mainform LRSTranslator := TPoTranslato.Creater(PODatei.po); wie im Wiki beschrieben.

Bei Std-Komponenten der LCL klappt das auch prima, ebenso wie bei Resourcenstrings.
Allerdings ersetzt er in meinen eignene visuellen Komponenten nicht die Text-Eigenschaten.
In der von Lazarus aus den lrt Dateien erstellten POs sind sie vorhanden und auch übersetzt.

Hat jemand eine Idee, was ich falsch mache?

Gruß
FX

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: i18n bei eigenen Komponenten

Beitrag von knight »

Möglicherweise rufst du in deinem Programm die für die .po Dateien benötigten Funktionen nicht korrekt auf. Daß die Übersetzungen bei den LCL Komponenten funktionieren dürfte daran liegen, daß die Zeichenketten aus den .po Dateien von Lazarus genommen werden (wenn ich davon ausgehe, daß du die Tests auf deinem Entwicklungsrechner durchführst, auf dem Lazarus installiert ist).

knight

FXMaveric
Beiträge: 19
Registriert: Mi 7. Jan 2009, 08:59

Re: i18n bei eigenen Komponenten

Beitrag von FXMaveric »

Hallo,

ich habe mich wohl unklar ausgedrückt.
Der Aufruf ist definitiv korrekt, das bei den LCL-Komponenten die Texte ersetzt werden.
Spricht TLabel.Caption = 'Haus' wird zu 'House'

MyComponent.Text = 'Baum" bleibt 'Baum'

In der PO-Datei die Lazarus aus den lrt erstellt ist Haus und Baum zu den entsprechenden Komponenten aufgeführt.
In der mit den Übersetzungen gefütterten Version auch.

Es schein so, als ob der POTranslator Probleme mit meinen Komponenten hat.
Nachtrag:
Allerdings schein es so, als ob dieses nicht auf alle meiner grafischen Komponenten zutrifft!
Komischer weise scheint es einmal zu gehen und an anderer Stelle nicht. (gleiche Komponente).

Antworten