![]() |
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 ![]() Download usw.: SIEHE ANHANG! Zutaten für 1 Programm:
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:
Und jetzt, dass ALLE Labels bzw Button (oder was auch immer) Captions mit den englischen/deutschen Wörtern gefüllt wird:
CL:=loadIni(DE) // DE steht hier für Deutsch
Delphi-Quellcode:
Das sieht dann jetzt so aus:
if CL<>nil then
begin fillProps([form1],CL); // Alles füllen
Delphi-Quellcode:
Damit wir das ganze jetzt auch in Englisch machen können, doppelklicken wir auf den Englisch-Button und geben folgenden Code ein:
procedure TForm1.DeutschClick(Sender: TObject);
begin CL:=loadIni(DE); if CL<>nil then fillProps([form1],CL); end;
Delphi-Quellcode:
Jetzt erstellen wir die Labels.
procedure TForm1.EnglischClick(Sender: TObject);
begin CL:=loadIni(EN); // Statt DE steht jetzt hier EN if CL<>nil then fillProps([form1],CL); end; 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:
Und die German.ini genau gleich ABER auf Deutsch :D
[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 Damit das Programm gleich beim starten übersetzt wird, doppelklicken wir in die Form (FormCreate Funktion) und geben folgendes ein:
Delphi-Quellcode:
Das sieht dann so aus:
CL:=loadIni(DE); // DE wenn ihr Deutsch laden wollt und EN wenn ihr Englisch laden wollt
if CL<>nil then fillProps([form1],CL);
Delphi-Quellcode:
TEST
procedure TForm1.FormCreate(Sender: TObject);
begin CL:=loadIni(DE); if CL<>nil then fillProps([form1],CL); end; 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] |
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 ![]() |
Re: Mehrsprachiges Programm mit *ini
Ich denke, es ist sinnvoller die Sprachen in DLLs auszulagern.
|
Re: Mehrsprachiges Programm mit *ini
Och, der Möglichkeiten gibt es viele, Ressourcen-DLLs sind eine davon (und IMHO keine schlechte).
|
Re: Mehrsprachiges Programm mit *ini
Zitat:
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. |
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. |
Re: Mehrsprachiges Programm mit *ini
Hallo,
ausserdem sind Inis mit Vista nicht mehr so einfach zu benutzen. Heiko |
Re: Mehrsprachiges Programm mit *ini
Inwiefern?
|
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 |
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:37 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 by Thomas Breitkreuz