AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Mehrsprachiges Programm mit *ini
Tutorial durchsuchen
Ansicht
Themen-Optionen

Mehrsprachiges Programm mit *ini

Ein Tutorial von Ashanita · begonnen am 23. Dez 2008 · letzter Beitrag vom 23. Nov 2017
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Ashanita
Registriert seit: 29. Mai 2008
Zu allererst:

Ich hoffe etwas ähnliches wurde nicht schon früher gepostet, denn ich bin mit der Suchfunktion auf nichts gestoßen. Falls es ein ähnliches Tutorial schon geben sollte, dann verzeiht mir

Multilanguage Programm


by Whiteprince aka Ashaníta


Allgemeine Information

Zubereitungszeit: ca. 30-45 Minuten
Schwierigkeitsgrad: mittel
Freischaltung: 23. Dezember 08

Beschreibung

Das Programm soll mit mehreren Sprachen mit INI Konfiguration verfügbar sein, sprich wenn man als Einstellung ENGLISCH für das Programm wählt, wird das ganze Programm ins Englische übersetzt.

Screenshots & Demo Downloads

http://gpproductions.kilu.de/Multi-Language-TUT.bmp

Download usw.: SIEHE ANHANG!

Zutaten für 1 Programm:
  1. Button | Name: Deutsch (Name NICHT Caption!)
    Button | Name: Englisch
    Label | Name: TestLabel1
    Label | Name: TestLabel2
Vorbereitung

Erstelle ein neues Projekt (VCL-Formularanwendung) und ziehe alle oben aufgelisteten Komponenten auf die Form. (Genau ausrichten kann man die Später )

Zubereitung

Zuallererst: was hat welche Komponente für eine Aufgabe?

Deutsch (Button) | Übersetzt ganzes Programm in Deutsch
Englisch (Button) | Übersetzt ganzes Programm in Englisch
TestLabel1 (Label) | Einfacher Text zum überprüfen ob Übersetzung funktoniert
TestLabel2 (Label) | Selbe wie TestLabel1

Zuerst fügen wir (ganz wichtig!)IniLang in die uses rein!

Jetzt doppelklicken wir (in der Form) auf den Deutsch-Button. Jetzt können wir mit Hilfe der procedure Funktion bestimmen was beim Button-Klick passiert. Wir geben an, dass beim Klick das Programm übersetzt wird:

Code:
CL:=loadIni(DE) // DE steht hier für Deutsch
Und jetzt, dass ALLE Labels bzw Button (oder was auch immer) Captions mit den englischen/deutschen Wörtern gefüllt wird:

Delphi-Quellcode:
if CL<>nil then
begin
fillProps([form1],CL); // Alles füllen
Das sieht dann jetzt so aus:

Delphi-Quellcode:
procedure TForm1.DeutschClick(Sender: TObject);
begin
CL:=loadIni(DE);
if CL<>nil then
fillProps([form1],CL);
end;
Damit wir das ganze jetzt auch in Englisch machen können, doppelklicken wir auf den Englisch-Button und geben folgenden Code ein:

Delphi-Quellcode:
procedure TForm1.EnglischClick(Sender: TObject);
begin
CL:=loadIni(EN); // Statt DE steht jetzt hier EN
if CL<>nil then
fillProps([form1],CL);
end;
Jetzt erstellen wir die Labels.

Und nun erstellen wir 2 Ini-Dateien, eine mit dem Namen "Englisch.ini" und eine mit dem Namen "German.ini" (die Dateien müssen so heißen).

Die Englisch.ini füllen wir folgendermaßen:

Delphi-Quellcode:
[Form1]
Form1.Caption=Gewünschter Text für die Form-Caption in Englisch
Form1.Englisch.Caption=Gewünschter Text für den Englisch-Button in Englisch
Form1.Deutsch.Caption=Gewünschter Text für den Deutsch-Button in Englisch
Form1.TestLabel1.Caption=Gewünschter Text für den TestLabel1 in Englisch
Form1.TestLabel2.Caption=Gewünschter Text für den TestLabel2 in Englisch
Und die German.ini genau gleich ABER auf Deutsch

Damit das Programm gleich beim starten übersetzt wird, doppelklicken wir in die Form (FormCreate Funktion) und geben folgendes ein:

Delphi-Quellcode:
CL:=loadIni(DE); // DE wenn ihr Deutsch laden wollt und EN wenn ihr Englisch laden wollt
if CL<>nil then
fillProps([form1],CL);
Das sieht dann so aus:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
CL:=loadIni(DE);
if CL<>nil then
fillProps([form1],CL);
end;
TEST

Jetzt Compilieren wir das ganze und starten das Programm (bitte geht sicher, dass German.ini und Englisch.ini im selben Ordner wie euer Programm ist) und klicken einmal auf den Englisch-Button bzw den Deutsch-Button und TADA es geht

[edit=Phoenix]Verlinkung auf Rapidshare entfernt. Wenn, dann bitte hier anhängen. Mfg, Phoenix[/edit]
Angehängte Dateien
Dateityp: zip multilanguagetutinilang_213.zip (4,9 KB, 77x aufgerufen)
Dateityp: rar multilanguagetutsource_182.rar (8,5 KB, 67x aufgerufen)
Dateityp: rar multilanguagetutdemo_983.rar (177,5 KB, 69x aufgerufen)

Geändert von mkinzler (30. Jul 2010 um 12:27 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
 
Benutzerbild von Bernhard Geyer
Bernhard Geyer

 
Delphi 10.4 Sydney
 
#11
  Alt 23. Dez 2008, 09:22
Zitat von hoika:
der Pfad der Inis wird "virtualisiert".
Komisch nur das unsere Programme sich so wie unter NT/2000/XP/2003 verhalten?
Wie wäre es einfach ein passendes Manifest mitliefern und diese Virtualisierung fürs eigene Programm abschalten lässt.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#12
  Alt 23. Dez 2008, 09:24
In diesem Fall werden die Inis ja nicht beschrieben, so dass auch keine Virtualisierung erfolgen sollte
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#13
  Alt 23. Dez 2008, 09:25
So geht es natürlich auch.

Übrigens: Wäre es nicht besser die Daten an den ersten Post anzuhängen und nicht auf Rapidshare auszulagern?
Manuel
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#14
  Alt 23. Dez 2008, 10:04
Hallo,

Bernhard, ja mit Manifest löst man sowas ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
 
#15
  Alt 23. Dez 2008, 10:06
Zitat von Die Muhkuh:
Übrigens: Wäre es nicht besser die Daten an den ersten Post anzuhängen und nicht auf Rapidshare auszulagern?
Ja, wäre es. Und das sollte man bitte auch tun. Ich habe die Links zu Rapidshare mal entfernt.
Sebastian Gingter
  Mit Zitat antworten Zitat
Cyf

 
Lazarus
 
#16
  Alt 23. Dez 2008, 12:27
Wie genannt, sollte Virtualisierung kein Thema sein, da auf die Inis nur lesend zugegriffen wird.
es ist aber in der Tat so, dass Inis etwas in die Jahre gekommen sind und ich meine auch, es gäbe Begrenzungen für die Anzahl und Länge der Einträge. Allerdings ist eine andere Frage, ob (wenn man eben keine Ressourcen will) der Aufwand für z.B. XML sich lohnt.
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#17
  Alt 23. Dez 2008, 12:29
Hallo,

Noch ein kleiner Tip.

TIniFile öffnet die Ini schreibend,
auch wenn nur lesend zugegriffen wird.

Lösung: TMemIniFile.


Heiko
Heiko
  Mit Zitat antworten Zitat
Ashanita
 
#18
  Alt 23. Dez 2008, 13:42
Zitat von Die Muhkuh:
So geht es natürlich auch.

Übrigens: Wäre es nicht besser die Daten an den ersten Post anzuhängen und nicht auf Rapidshare auszulagern?
Tut mir Leid, ich habe nicht gewusst, dass ich das machen kann. War ja auch recht müde als ich es geschrieben hab

Ich hänge es mal direkt normal an

@Heiko (über mir)

Danke dir, ich werde es mir mit TMemIniFile mal ansehen.
Mein Delphi ist noch nicht weit genug um mit DLL zu arbeiten, aber ich enke das kommt bald

Und das mit INI, mache ich, damit ich Rechtschreibverbesserungen usw. machen kann. Aber mal sehen wie es mit DLL dann aussieht.

Greetz Asha
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

 
Delphi 2010 Professional
 
#19
  Alt 23. Dez 2008, 14:38
Hi,

Zitat von hoika:
Hallo,

Noch ein kleiner Tip.

TIniFile öffnet die Ini schreibend,
auch wenn nur lesend zugegriffen wird.

Lösung: TMemIniFile.


Heiko
Wie kommst Du denn auf das schmale Brett.
TInifile öffnet die Ini gar nicht, sondern bemüht zu diesem Zweck die Windows Api Funktionen zum lesen / schreiben.

Gruss
Thomas Kerkmann
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#20
  Alt 23. Dez 2008, 15:02
Hallo,

schon klar,
die API-Funktionen aber öffnen die Ini zum Schreiben.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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