Laden...

MGLocalizer - Lokalisieren leicht gemacht

Erstellt von michlG vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.169 Views
michlG Themenstarter:in
3.430 Beiträge seit 2007
vor 14 Jahren
MGLocalizer - Lokalisieren leicht gemacht

Hallo Leute,

da ich hauptsächlich in WPF entwickle und es dabei immer wichtig ist dass die Anwendung in Italienisch, Deutsch und Englisch übersetzt werden (mach ich meistens selbst) habe ich mir ein paar kleine Helfer geschrieben womit ich mir viel viel Arbeit spare.

Da ich auch noch Projekte im Compact Framework oder auf WinForms mache habe ich mich dazu entschlossen ein Projekt ins Leben zu rufen das auf allen drei gleich funktioniert.

Also das Prinzip ist folgendes.
In einer CSV Datei wird jeder Text gespeichert.
Dabei gibt es einen Identifier (Kennung oder ID) und den String in jeder benötigten Sprache.

Dann hab ich da noch eine statische Klasse welche diese CSV-Datei einliest und ein paar nützliche Funktionen bietet um die Texte auszulesen. Diese kann man dann überall im Code verwenden und den String in der aktuellen Sprache (aktive Sprache) auslesen. Zudem gibt es noch parametrierte Strings (also z.B: "Es sind 10 Fehler aufgetreten") wo 10 die Variable ist. Das kann man damit auch relativ einfach machen.

Da ich die meisten WPF Controls um einige Funktionen erweitert habe (z.B: Eingabe-Popups für Touchscreen) habe ich direkt noch neue Properties geadded (LocalizableContent, oder LocalizableTooltip) womit man direkt im XAML Code den Identifier des Strings angeben kann dann wird das Control automatisch lokalisiert.

Weiters bietet die statische Localizer-Klasse ein Event das ausgelöst wird sobald die Sprache geändert wird. Damit könnt ihr dann die Texte updaten.

Weil das mit der CSV Datei ein bisschen fummelig ist habe ich mir vor ein paar Tagen schnell ein kleines Tool geschrieben das einem beim Lokalisieren weiterhilft.
D.h. man gibt den Projektordner an, dann sucht es automatisch die Strings welche lokalisiert werden können und man kann dann im Editor alles übersetzen und das CSV-File generieren lassen).
Leider sieht man dem kleinen Tool auch an dass ich es nur schnell gemacht habe zudem hatte ich nicht viel Zeit es zu testen, aber soweit müsste das schon laufen.
Das Tool befindet sich also im Alpha-stadium und muss noch um einige Funktionen erweitert werden (dazu habe ich aber in naher Zukunft sicher keine Zeit).

Wenn ihr wollt dann könnt ihr gerne Änderungen vornehmen.
Das kleine Tool ist eine WPF Applikation die auf Cinch aufbaut. Zudem habe ich den Avalon-Editor verwendet (der selbe wie bei SharpDevelop). Eine weitere Zusatzkomponente ist Ookii, diese ist besonders wegen den OpenFileDialog, SaveFileDialog oder Folderbrowserdialog klasse. Ein riesen Danke an alle diese Leute 👍

Aber ich möchte es euch nicht vorenthalten. Wenn ihr Bugs findet dann sagt es mir bitte. Vielleicht finde ich ja mal ein paar Stunden um das etwas zu verfeinern.

Mir ist klar dass das vielleicht nicht die optimalste Lösung für WPF ist, aber sie tut jedenfalls ihren Dienst und der Vorteil ist dass ich es auch problemlos für Winforms und das CompactFramework verwenden kann.

Das Ganze hab ich schon vor einigen Tagen auf meinem Blog veröffentlicht.
Guckst du hier: http://michlg.wordpress.com/mglocalizer/
Bei den Downloads müsst ihr aber die .doc Endung auf .rar ändern da es eine Rar Datei ist. Ich kann dort aber keine rar-dateien uploaden.

Dort findet ihr weitere Details bzw. eine Anleitung wie man den Localizer verwendet.
Zudem hab ich noch ein DemoProjekt und das gesamte Projekt als download.

Die selbe Datei findet ihr auch hier bald als Download. (Ein großes Danke schon im Voraus an Herbivore fürs Uploaden) 🙂

Gruss
Michael

//EDIT: Rechtschreibfehler ausgebessert.. Mein Deutsch wird immer schlimmer 🙁

michlG Themenstarter:in
3.430 Beiträge seit 2007
vor 14 Jahren

Hier noch ein Screenshot vom Hilfs-Tool zum Lokalisieren.
Links sieht man die einzelnen Funktionen, in der Mitte der momentan in Bearbeitung stehende Sourcecode und Rechts die einzelnen Text

X
2.051 Beiträge seit 2004
vor 14 Jahren

Hallo,

verstehe ich richtig, dass damit nur drei vorgegebene Sprachen verwaltet werden?

U
1.578 Beiträge seit 2009
vor 14 Jahren

Interessanter ansatz.

  1. Kann man auch mehrere Sprachen gleichzeitig von verschiedenen Leuten übersetzen lassen?
  2. Werden die texte in den Dateien zur laufzeit in die jeweilige Sprache ausgetauscht sobald man die Sprache ändert?
  3. Können beliebig viele Sprachen hinzu gefügt und entfernt werden?
  4. Kann es übersetzt werden ohne den Sourcecode zu haben?

Eventuell interessiert sich das, ich verfasse derzeit einige Artikel auf meiner Seite zum thema Lokalisierung, da es mein Spezialgebiet ist.

Du hast den Vorteil das es auch für Forms geht, nur, eine richtige übersetzung für WPF ist das nicht.

michlG Themenstarter:in
3.430 Beiträge seit 2007
vor 14 Jahren

Hallo zusammen,

verstehe ich richtig, dass damit nur drei vorgegebene Sprachen verwaltet werden?

nö. Du kannst im .csv file selbst Sprachen anlegen die du willst.
Also oben in der ersten Zeile einfach noch welche angeben.

Das muss bzw. werde ich aber irgendwann noch flexibler machen, weil momentan ist das speziell auf meine Bedürfnisse massgeschneidert.
Falls es eine ist die nicht in meinem Language-Enum drinnen ist wird es zu einem Problem führen. Aber genau das mit der Sprachenauswahl werde ich dann auch einbauen.

  1. Kann man auch mehrere Sprachen gleichzeitig von verschiedenen Leuten übersetzen lassen?

Nö, man könnte isch nacheinander das CSV File weitergeben 😃
Nein mal im Ernst. Es dient zur lokalisierung von kleinen Programmen, wenn man ein riesiger WPF Programm hat dann ist sicher besser wenn man etwas maßgeschneidertes hat (werde ich mir in zukunft wahrscheinlich noch dazubasteln).
Da ich es meist selbst Lokalisiere brauche ich es nicht weiterreichen.
Aber ich werde eine Art Mergefunktion einbauen mit dem man 2 dateien zusammenmergen kann.

  1. Werden die texte in den Dateien zur laufzeit in die jeweilige Sprache ausgetauscht sobald man die Sprache ändert?

Jein. D.h. Es fliegt ein Event und damit kriege ich mit wenn die Sprache geändert wurde. Dann könnte man gegebenfalls Texte aktualisieren.
Da ich fast ausschliesslich von mir gemoddete Controls (mit Toucheingabe usw. habe) habe ich mir schon die Eigenschaft (LocalizedText usw.) hinzugefügt.
Dann kann ich dort direkt im XAML-Code die Kennung des Texts angeben.
Weiters könnte man es auch über AttachedProperties machen.

  1. Können beliebig viele Sprachen hinzu gefügt und entfernt werden?

Ja. momentan aber nur manuell im csv file.
D.h. man muss vorher in der ersten Zeile die Sprachen festlegen dann siehst du die im Programm

  1. Kann es übersetzt werden ohne den Sourcecode zu haben?

Momentan nicht. Bzw. man kann zwar die Datei einmal erzeugen und dann manuell bearbeiten aber mit dem Tool geht das noch nicht.
Da muss man halt einmal die CSV datei generieren.
Die Option es ohne Sourcecode zu machen kommt aber bestimmt irgendwann.

Eventuell interessiert sich das, ich verfasse derzeit einige Artikel auf meiner Seite zum thema Lokalisierung, da es mein Spezialgebiet ist.

Du hast den Vorteil das es auch für Forms geht, nur, eine richtige übersetzung für WPF ist das nicht.

klar interessiert mich das.
Wenn du da der Experte bist dann kann ich mir da bestimmt was abgucken.
Und ne Optimierung für WPF ist sicherlich nicht schlecht.
Werde ich dann einbauen sobald ich zeit dazu finde.

Wie gesagt werde ich an dem Ding noch einiges ändern.. Ist ja erst die Alpha Version. Und nur aus der Not entstanden dass schnell irgendwas her musste 😃

grüsse
michael