![]() |
Realisierung von Mehrsprachigkeit
Da ich ein Freund von Programmen bin, welche Mehrsprachig sind, baue ich meist (für mich) zu statische Mehrsprachigkeitvisuallisierung ein.
Aber jetzt frage ich mich, wie man am Besten die mehrsprachigkeit Visuallisiert. Okay ... Komplett vielleicht schwer umzusetzen, aber ich meine eigentlich die Komponenten (Edits, MainMenüs, Labels ...). Ich habe es für mein Mainmenü so umgesetzt:
Delphi-Quellcode:
Aber was ist, wenn ich jetzt das für Edits realisieren will!
procedure TForm1.changeLanguage(fileName : string);
var i, j : Integer; ini : TIniFile; begin ini := TIniFile.Create(fileName); try for i := 0 to mmMenu.Items.Count - 1 do begin mmMenu.Items[i].Caption := ini.ReadString(mmMenu.Items[i].Name, 'Name', mmMenu.Items[i].Caption); for j := 0 to mmMenu.Items[i].Count - 1 do mmMenu.Items[i].Items[j].Caption := ini.ReadString(mmMenu.Items[i].Name, mmMenu.Items[i].Items[j].Name, mmMenu.Items[i].Items[j].Caption); end; finally ini.Free; end; end; Weil Edits haben ja nicht die Eigenschaft "Caption" sondern "Text". Wie würdet ihr das machen? Ich hätte es so gemacht ("Grundriss"): Ini-Datei (Sprachdatei)
Code:
[<Formularname>]
<KomponentenName>=<Übersetzung für die Komponente> ....
Delphi-Quellcode:
Form1.Component[i].<Text> := ini.ReadString(Form1.Name, Form1.Component[i].Name, '')
|
Re: Realisierung von Mehrsprachigkeit
|
Re: Realisierung von Mehrsprachigkeit
Wenn du das Problem unbedingt zu Fuß lösen willst, würde ich die Übersetzungen nicht ganzen Controls zuordnen, sondern ihren jeweiligen Eigenschaften. Schließlich gibt es viele Fälle, in denen mehr als eine Eigenschaft lokalisiert werden muss.
|
Re: Realisierung von Mehrsprachigkeit
Zitat:
|
Re: Realisierung von Mehrsprachigkeit
Nein, was da installiert wird, ist das "Drumherum". Die eigentliche Übersetzung macht eine Unit die einfach ins Uses eingetragen wird. Texte holt man sich dann z.B. mit der Funktion _('Text') (ja, die Funktion heisst wirklich "Unterstrich"), Forms und ähnliches übersetzt man fast 100% automatisch mittels Aufruf von TranslateComponent(self) :) Der Windows-Installer bringt ausser den ganzen Tools, Sourcen und Dokumentation auch noch ne Explorer-Integration mit. Steht aber auch alles in der Dokumentation beschrieben, inkl. Schritt-für-Schritt-Tutorial zur ersten mehrsprachigen Exe :)
|
Re: Realisierung von Mehrsprachigkeit
Hallo,
die Funktion heisst getText, aber für faule wurde die halt überladen (?) und man kann _ benutzen. ;) :lol: Heiko |
Re: Realisierung von Mehrsprachigkeit
|
Re: Realisierung von Mehrsprachigkeit
Ich würde übrigens gleich zu Actions und ActionLists greifen.
Dann müssen nur die [TAction].Caption übersetzt werden und die Menueitems und evtl. vorhandene Toolbuttons ändern sich gleich mit. |
Re: Realisierung von Mehrsprachigkeit
Zitat:
Zitat:
Aber ich guck mir mal den 1. Fall nochmal an. PS: Ich weiß ;) Ich könnte es auch dynamisch erstellen, aber ich möchte iegtnlich nicht darauf verzichten. |
Re: Realisierung von Mehrsprachigkeit
Hi xZise, ich wollte dich bloß mal kurz darauf aufmerksam machen, dass man Komponenten in TurboDelphi installieren kann!!!
Ich habe dazu schon mal einen Thread erstellt ( ![]() Und als bester Beitrag gilt der hier von Balu: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz