Hallo,
Beschreibung
In diesem Thread möchte ich euch gerne mein Multilanguage-System vorstellen. Mit der Multilanguage Klasse kann man ganz einfach und simpel Programme schreiben, die mehrere Sprachen unterstützen.
Wie funktioniert es?
Zunächst binded man die Klasse in das Projekt ein. Dies geht ganz einfach, indem man die Klasse (.vb) im Projektmappenfenster auf den Projekttitel dropt. (Siehe bild im anhang)
Man erstellt eine Multilanguage-Datei (eine ganz einfache und normale .txt Datei). Diese ist wie folgt aufgebaut:
wobei die Anzahl der Sprachen und Bezeichner natürlich unbegrenzt ist.
Die Daten werden mit Funktionen ausgelesen; dazu später mehr.
Beispiel
Eine einsatzfählige Multilanguagedatei könnte so aussehen: (Ich nehme für das Beispiel die drei Sprachen Deutsch, English und Französisch)
mit
und mit
schliesst man sie.
In der 1. Zeile einer ML-Datei steht die Sprache, die die App laden soll. Wenn der Benutzer die Sprache über den Sprachendialog ändert, ändert er die 1. Zeile.
So, nun schreiben wir unser kleines Programm. Wir nehmen einfach mal an, wir hätten jetzt einen französischsprechenden Benutzer.
Im Form_Load Event intialisieren wir Multilanguage; wir geben also an wo die Datei liegt und welche Sprache wir auslesen wollen.
Wenn der letzte Parameter von setFile() True ist, wird die gespeicherte-/standard-sprache benutzt. Wenn er False ist (oder nicht angegeben ist), muss man mit ml.setLang("sprache") die Sprache angeben.
Und nun können wir mithilfe von getML() den Wert eines Bezeichners (in unserem Fall "welcome") auslesen und unsere Willkommensmessagebox aufrufen.
Variable Texte
Auch kann man Variable Texte aus der Datei lesen. Zum Beispiel eine Solche Datei:
getML() hat optionale Parameter namens sVariables. In diesen Strings sind Daten drin. Die "%var" werden mit diesen Daten ersetzt.
Mit der oben gezeigten Datei würde es so aussehen:
Es können auch mehrere %var vorkommen, jedes %var braucht auch einen Paramater
ein Beispiel:
dann muss getML() so aussehen: getML("schlüssel", "var1", "var2").
Die Anzahl von Variablen ist auch unbegrenz. Wenn man 5 %var hat sieht getML() so aus: getML("schlüssel", "var1", "var2", "var3", "var4", "var5"....)
Zeilenumbrüche
Zeilenumbrüche sind nun mit "%n" (newline) möglich. z.B:
Kommentare
Kommentare macht man in einer ML-Datei mit "//". Entweder sind Kommentare am Ende einer Zeile, order ganz auf einer eigenen Zeile.
Die 1. Zeile darf kein Kommentar sein.
Methoden
Vorteile?
Wenn man dieses System benutzt, ist es sehr leicht viele Sprachen anzubieten. Man könnte beim veröffentlichen der Beta oder so, die User auffordern die ML-Datei zu übersetztn. So bekommt man in möglichst kurzer Zeit, viele Sprachen.
Bemerkungen
Natürlich muss man selbst einen "Sprachen Dialog" programmieren, damit der User auswählen kann, welche Sprache er möchte. Vielleicht implementiere ich das noch zusätzlich in die Klasse.
Credits
Das Alliedmodders-Team benutz für sein AMXX Plugin ein ähnliches ML-System. Ich finde dieses System gut, darum wollte ich es für VB "nachprogrammieren".
Daten
IDE: vb 08
Sprache: vb.net 3.5 (vlt geht auch 2.0, muss ich später nachgucken^^)
[*]Hast du sonst noch Ideen? Bitte Posten
Wenn ihr noch Ideen habt, was ich noch vergessen habe oder noch reinpacken kann einfach sagen. Ebenfalls würde ich mich über Kommentare und Kritik freuen.
Auf einen kleinen Verweis in euren Programmen würde ich mich natürlich freuen; freiwillig of course
MFG Mottzi
[CHANGELOG]
Version 1.1:
Beschreibung
In diesem Thread möchte ich euch gerne mein Multilanguage-System vorstellen. Mit der Multilanguage Klasse kann man ganz einfach und simpel Programme schreiben, die mehrere Sprachen unterstützen.
Wie funktioniert es?
Zunächst binded man die Klasse in das Projekt ein. Dies geht ganz einfach, indem man die Klasse (.vb) im Projektmappenfenster auf den Projekttitel dropt. (Siehe bild im anhang)
Man erstellt eine Multilanguage-Datei (eine ganz einfache und normale .txt Datei). Diese ist wie folgt aufgebaut:
wobei die Anzahl der Sprachen und Bezeichner natürlich unbegrenzt ist.
Die Daten werden mit Funktionen ausgelesen; dazu später mehr.
Beispiel
Eine einsatzfählige Multilanguagedatei könnte so aussehen: (Ich nehme für das Beispiel die drei Sprachen Deutsch, English und Französisch)
mit
fängt man mit einer Sprache an;[sprache
und mit
];
schliesst man sie.
In der 1. Zeile einer ML-Datei steht die Sprache, die die App laden soll. Wenn der Benutzer die Sprache über den Sprachendialog ändert, ändert er die 1. Zeile.
So, nun schreiben wir unser kleines Programm. Wir nehmen einfach mal an, wir hätten jetzt einen französischsprechenden Benutzer.
Im Form_Load Event intialisieren wir Multilanguage; wir geben also an wo die Datei liegt und welche Sprache wir auslesen wollen.
Wenn der letzte Parameter von setFile() True ist, wird die gespeicherte-/standard-sprache benutzt. Wenn er False ist (oder nicht angegeben ist), muss man mit ml.setLang("sprache") die Sprache angeben.
Und nun können wir mithilfe von getML() den Wert eines Bezeichners (in unserem Fall "welcome") auslesen und unsere Willkommensmessagebox aufrufen.
Variable Texte
Auch kann man Variable Texte aus der Datei lesen. Zum Beispiel eine Solche Datei:
getML() hat optionale Parameter namens sVariables. In diesen Strings sind Daten drin. Die "%var" werden mit diesen Daten ersetzt.
Mit der oben gezeigten Datei würde es so aussehen:
VB.NET-Quellcode
- Dim ml As New MultiLanguage
- ml.setFile("C:\Users\mottzi\Desktop\ML_TEST.txt") ' hier kann man auch den letzten Parameter "True" stellen, damit die gespeicherte Sprache / Standardsprache automatisch geladen wird (aus der MLDATEI ), dann ist setLang() unnötig.
- ml.setLang("en")
- MsgBox(ml.getML("date", My.Computer.Clock.LocalTime().ToString))
Es können auch mehrere %var vorkommen, jedes %var braucht auch einen Paramater
ein Beispiel:
dann muss getML() so aussehen: getML("schlüssel", "var1", "var2").
Die Anzahl von Variablen ist auch unbegrenz. Wenn man 5 %var hat sieht getML() so aus: getML("schlüssel", "var1", "var2", "var3", "var4", "var5"....)
Zeilenumbrüche
Zeilenumbrüche sind nun mit "%n" (newline) möglich. z.B:
Kommentare
Kommentare macht man in einer ML-Datei mit "//". Entweder sind Kommentare am Ende einer Zeile, order ganz auf einer eigenen Zeile.
Die 1. Zeile darf kein Kommentar sein.
Methoden
- Mit setFile() geben wir an, wo sich die Datei befindet
- Mit setLang() geben wir an, welche Sprache wir auslesen wollen
- Mit getML() lesen wir den Wert eines Bezeichners aus
- Mit getLangCount() können wir herausfinden, wieviele Sprachen unterstützt werden
- Mit getLangs() können die Sprachen von einer ML-Datei ausgelesen werden. Returnt eine List(Of String)
- Mit getVarCount() kann man herausfinden wieviele "%var" ein String hat.
- Mit formLangSelect() kann man den Sprache-Speichern Dialog aufrufen
- mit getSavedLang() kann man die Default/Gespeicherte Sprache herausfinden.
Vorteile?
Wenn man dieses System benutzt, ist es sehr leicht viele Sprachen anzubieten. Man könnte beim veröffentlichen der Beta oder so, die User auffordern die ML-Datei zu übersetztn. So bekommt man in möglichst kurzer Zeit, viele Sprachen.
Bemerkungen
Natürlich muss man selbst einen "Sprachen Dialog" programmieren, damit der User auswählen kann, welche Sprache er möchte. Vielleicht implementiere ich das noch zusätzlich in die Klasse.
Credits
Das Alliedmodders-Team benutz für sein AMXX Plugin ein ähnliches ML-System. Ich finde dieses System gut, darum wollte ich es für VB "nachprogrammieren".
Daten
IDE: vb 08
Sprache: vb.net 3.5 (vlt geht auch 2.0, muss ich später nachgucken^^)
[*]Hast du sonst noch Ideen? Bitte Posten
Wenn ihr noch Ideen habt, was ich noch vergessen habe oder noch reinpacken kann einfach sagen. Ebenfalls würde ich mich über Kommentare und Kritik freuen.
Auf einen kleinen Verweis in euren Programmen würde ich mich natürlich freuen; freiwillig of course
MFG Mottzi
[CHANGELOG]
Version 1.1:
- Variable Daten möglich (was ist das? Siehe oben.)
- Zeilenumbrüche möglich (Siehe oben.)
- Kommentare möglich (Siehe oben)
- Variable Daten einsetzten nun besser (verscheidene Paramater anstatt "par1;par2;par3". Mehr siehe oben)
- Kommentarzeilen nun möglich
- Standardsprache hinzugefügt (1. Zeile = Standardsprache... Mehr Infos siehe Beispiele)
- Sprachenauswähl-Dialog hinzugefügt (Siehe oben)
- Funktion hinzugefügt:
Function getSavedLang(Optional ByVal sFile As String = "") As String
Function getLangs(ByVal sFile As String) As List(Of String) - setFile hat nun noch einen Parameter. Wenn man den letzten Parameter (Boolean) auf True setzt, liesst er die gespeicherte Sprache autmatisch ein, und man muss nicht mit setLang arbeiten.
- Code verbessert
- Der Sprachenauswähldialog wurde gefixxt und verbessert.
- Code Verbessert
"I think Microsoft has abused the Windows brand so much that it has lost its cachet."
Paul Thurrott
Paul Thurrott
Dieser Beitrag wurde bereits 47 mal editiert, zuletzt von „mottzi“ () aus folgendem Grund: Neue Version