Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Realisierung von Mehrsprachigkeit (https://www.delphipraxis.net/82336-realisierung-von-mehrsprachigkeit.html)

xZise 11. Dez 2006 15:20


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:
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;
Aber was ist, wenn ich jetzt das für Edits realisieren will!
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, '')

hoika 11. Dez 2006 15:29

Re: Realisierung von Mehrsprachigkeit
 
Hallo,

das gibt es schon als fertige Lösung (gettext)
siehe auch

http://dybdahl.dk/dxgettext/

Heiko

Khabarakh 11. Dez 2006 15:35

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.

xZise 11. Dez 2006 16:19

Re: Realisierung von Mehrsprachigkeit
 
Zitat:

Zitat von hoika
Hallo,

das gibt es schon als fertige Lösung (gettext)
siehe auch

http://dybdahl.dk/dxgettext/

Heiko

Habe ich es richtig gesehen, dasss es sich dabei um zu installierende Komponenten handelt?

OldGrumpy 11. Dez 2006 16:32

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 :)

hoika 11. Dez 2006 16:57

Re: Realisierung von Mehrsprachigkeit
 
Hallo,

die Funktion heisst getText, aber für faule wurde die halt überladen (?)
und man kann _ benutzen.

;) :lol:


Heiko

kalmi01 11. Dez 2006 16:58

Re: Realisierung von Mehrsprachigkeit
 
Moin moin,

vielleicht ist das ja was für Dich ?

shmia 11. Dez 2006 18:05

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.

xZise 11. Dez 2006 18:38

Re: Realisierung von Mehrsprachigkeit
 
Zitat:

Zitat von OldGrumpy
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 :)

Zitat:

Zitat von kalmi01
Moin moin,

vielleicht ist das ja was für Dich ?

Ich besitzte Turbo Delphi Exporer ;) d.h. ich kann keine Fremdpackges installieren (was ja im 2. Fall 100% so ist (und im 1. scheint es auch so.)).

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.

TonyR 11. Dez 2006 18:55

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 (Komponente in Turbo Delphi verwenden)

Und als bester Beitrag gilt der hier von Balu:
Zitat:

Im zweiten Teil wirst du fündig werden. http://www.danielstools.de/downloads/count.php?id=18


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 1 von 3  1 23   

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