Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Mehrsprachiges Programm mit *ini (https://www.delphipraxis.net/126376-mehrsprachiges-programm-mit-%2Aini.html)

Ashanita 23. Dez 2008 00:45


Mehrsprachiges Programm mit *ini
 
Liste der Anhänge anzeigen (Anzahl: 3)
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 :D

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

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

[edit=Phoenix]Verlinkung auf Rapidshare entfernt. Wenn, dann bitte hier anhängen. Mfg, Phoenix[/edit]

DeddyH 23. Dez 2008 01:23

Re: Mehrsprachiges Programm mit *ini
 
Hallo und Willkommen in der DP :dp:,

Du hast Dir da viel Mühe gegeben, allerdings erscheint mir die Bedienung etwas umständlich (ohne es ausprobiert zu haben, ich habe nur Deinen Beitrag gelesen). Vielleicht möchtest Du einmal einen Blick auf sakuras Localizer werfen, um Dir ein paar weitere Anregungen zu holen.

Cyf 23. Dez 2008 01:28

Re: Mehrsprachiges Programm mit *ini
 
Ich denke, es ist sinnvoller die Sprachen in DLLs auszulagern.

DeddyH 23. Dez 2008 01:32

Re: Mehrsprachiges Programm mit *ini
 
Och, der Möglichkeiten gibt es viele, Ressourcen-DLLs sind eine davon (und IMHO keine schlechte).

sx2008 23. Dez 2008 07:01

Re: Mehrsprachiges Programm mit *ini
 
Zitat:

Zitat von Cyf
Ich denke, es ist sinnvoller die Sprachen in DLLs auszulagern.

Es kommt darauf an.
Bei Freeware gibt es öfters User, die das Programm freiwillig in ihre eigene Sprache übersetzen wollen.
INI-Dateien sind einfach mit dem Editor zu bearbeiten.
Bei Resourcen-DLLs könnte die Hürde schon zu hoch sein.

Phoenix 23. Dez 2008 07:22

Re: Mehrsprachiges Programm mit *ini
 
Dafür gibt es aber z.B. Gnu/gettext auch für Delphi. Dort hat man standardisierte .pl-Files mit denen diese freiwilligen Helfer dann auch arbeiten können.

Ich würde auf jeden Fall mit ressourcen arbeiten. Da gibt es genug Automatisierung um angenehm zu arbeiten. Der Aufwand so etwas ausgereiftes von Hand nachprogrammieren zu wollen (zumal noch mit .ini-Dateien, die schon etwas.. in die Jahre gekommen sind) ist einfach nicht gerechtfertigt.

hoika 23. Dez 2008 07:27

Re: Mehrsprachiges Programm mit *ini
 
Hallo,

ausserdem sind Inis mit Vista nicht mehr so einfach zu benutzen.


Heiko

Die Muhkuh 23. Dez 2008 07:53

Re: Mehrsprachiges Programm mit *ini
 
Inwiefern?

hoika 23. Dez 2008 08:08

Re: Mehrsprachiges Programm mit *ini
 
Hallo,

der Pfad der Inis wird "virtualisiert".
Da ins Programme-Verzeichnis nicth geschieben werden kann,
legt Vista die Ini selbständig im Nutzerverzeichnis (Pfad steht im Netz) ab,
und gaukelt dem Programm vor, dass die Ini erfolgreich im Programm-Verzeichnis geschieben wurde.

Das wird dann lustig, wenn man Änderungen im falschen Verzeuichnis sucht und nicht findet.

Heiko

Die Muhkuh 23. Dez 2008 08:17

Re: Mehrsprachiges Programm mit *ini
 
Das lustige daran ist, dass Du im Programm-Verzeichnis keinerlei Daten abzulegen hast und wenn man es macht, wie man es sollte, nämlich unter AppData, funktioniert alles ohne Probleme. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.
Seite 1 von 6  1 23     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf