Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Units mit GetText übersetzen, oder nur Unit1? (https://www.delphipraxis.net/166954-alle-units-mit-gettext-uebersetzen-oder-nur-unit1.html)

AlexII 7. Mär 2012 12:46


Alle Units mit GetText übersetzen, oder nur Unit1?
 
Hallo,

ich übersetze mein Programm mit GNU gettext. Nun die Frage muss ich in allen Units folgendes aufrufen

Delphi-Quellcode:
Unit2
....

If (Language='German') or (GetCurrentLanguage()='de_DE') or (GetCurrentLanguage()='de_AT') or (GetCurrentLanguage()='de_CH') then
begin
UseLanguage('de_DE');
ReTranslateComponent(Self);
end;
wenn bei mir alle Units in dem Implementation-Abschnitt der Unit1 eingebunden sind?

Delphi-Quellcode:
implementation

uses Unit2, Unit3, Unit4;
....
Reicht es wenn ich die ganze Übersetzung in Unit1 realisiere? Ich denke ja, oder? Bin mir da aber nicht sicher.

Danke!

Ralf Kaiser 7. Mär 2012 17:50

AW: Alle Units mit GetText übersetzen, oder nur Unit1?
 
Zitat:

Zitat von AlexII (Beitrag 1155046)
Reicht es wenn ich die ganze Übersetzung in Unit1 realisiere? Ich denke ja, oder? Bin mir da aber nicht sicher.
Danke!

Nein. Die Übersetzung (also mindestens das "TranslateComponent()") muss für jedes erzeugte Formular durchgeführt werden.

Es bietet sich daher an, alle Formulare von einer gemeinsamen Basisklasse abzuleiten und die Sprachverwaltung (welche Sprache soll benutzt werden) und die eigentliche Übersetzung in dieser Basisklasse zu machen. So muss man sich nicht in jeden neuen Formular darum kümmern.

Ciao,
Ralf

AlexII 7. Mär 2012 18:27

AW: Alle Units mit GetText übersetzen, oder nur Unit1?
 
Danke! :thumb:

himitsu 7. Mär 2012 18:40

AW: Alle Units mit GetText übersetzen, oder nur Unit1?
 
In Delphi-Referenz durchsuchenScreen werden auch alle VCL-Forms aufgelistet.
Diese könnte man durchlaufen und dann für jedes Fenster das TranslateComponent aufrufen, ohne es überall einbauen zu müssen.

Die automatisch erzeugten Fenster (über CreateForm in der DRP) besitzen Delphi-Referenz durchsuchenApplication, so daß man dort notfalls auch über Application.Components an diese renkommen könnte.

Ralf Kaiser 7. Mär 2012 19:01

AW: Alle Units mit GetText übersetzen, oder nur Unit1?
 
Das setzt aber voraus, dass zum Zeitpunkt wenn man übersetzen will schon alle Formulare erzeugt sind, was wohl normalerweise nicht so oft der Fall ist. Meistens wird man ein Hauptformular haben und die anderen Formulare nur erzeugen wenn man sie benötigt.

Da halte ich es für günstiger eine Basisklasse zu haben die "sich selbst" dann übersetzt wenn das jeweilige Formular erzeugt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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