Delphi-PRAXiS
Seite 2 von 2     12   

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 Menüs zur Laufzeit (https://www.delphipraxis.net/39744-menues-zur-laufzeit.html)

urs.liska 7. Feb 2005 15:27

Re: Menüs zur Laufzeit
 
Zitat:

Zitat von DelphiSourcer
Ich nehme an, das man damit verschiedene Stringkonstanten nach folgendem Muster anlegt:

Delphi-Quellcode:
ResourceString
  sDatei = 'Datei';
  sFile = 'File';
  ............
  sBearbeiten = 'Bearbeiten';
  sEdit = 'Edit';
  ............

type TLanguage = (english, german, french, .... );

  begin
     case Language of
       english: Menu.Items[0].Caption := sFile;
       german: Menu.Items[0].Caption := sDatei;
       french: ...;
     end;
  end;

Nein, das geht anders (und noch wesentlich besser).
In einer Ressourcendatei stehen alle strings, so wie in Deinem Bsp. nach "ResourceString"
Das eigentliche Programm weiß gar nichts von verschiedenen Sprachversionen, sondern Du schreibst einfach:
Delphi-Quellcode:
Menu.Items[0].Caption := sDatei;
Das ist genau der Punkt daran, dass im eigentlichen Quelltext nicht auf verschiedene SPrachen Rücksicht genommen werden muss.
Für verschiedene Sprachversionen werden einfach verschiedene Versionen der Ressourcendatei hergestellt. Da steht dann z.B.
Delphi-Quellcode:
ResourceString
  sDatei = 'File'
drin. Wie man damit genau umgeht, findest Du in der OH unter "resourcestring" bzw. unter "Internationalisierung" und "Lokalisierung" von Anwendungen. Auf jeden Fall sollten die ResourceStrings in eine eigene Unit.

Die Variante von scp kannte ich nicht, sieht aber sehr interessant aus.

Urs

lume96 7. Feb 2005 15:57

Re: Menüs zur Laufzeit
 
Moin,

ich würde mal einen Blick auf GNU GetText werfen.

Da brauchst Du, von ein paar Ausnahmen abgesehen, gar keine Captions per Hand zuzuweisen. Da gibt's, unter Anderem, zwei Funktionen :
Delphi-Quellcode:
TranslateComponent(Self);
und
Delphi-Quellcode:
ReTranslateComponent(Self);
welche automatisch die Captions, etc... der meissten Kompos anpassen (auch bei Laufzeit).

Alle Übersetzungen sind in Textdateien ausgelagert; für eine neue Sprache muss also nur eine Textdatei übersetzt werden, das Programm bleibt unverändert.

Ich find's ganz praktisch und hatte bis jetzt noch kleine Probleme damit.

Tschüss,
Lutz

Sharky 7. Feb 2005 18:59

Re: Menüs zur Laufzeit
 
Hai DelphiSourcer,

korriegiere doch bitte in deinen Postings die Tags. (Ich habe dazu nämlich keine Lust :stupid: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.
Seite 2 von 2     12   

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