Übersetzungstool + DLL für Programme
Einleitung
Aus eigenen projektspezifischen Anforderungen entstand ein kleines Übersetzungs-Tool. Und das möchte ich euch nicht vorenthalten. Vielleicht hilft es ja dem einen oder anderen. Ziel des ganzen war es, eine einfache, schnelle und leichte Anwendung für Übersetzungen und deren Implementation zu schaffen.
Features:
- Eigener Editor
- Suchfunktion
- Einfache Übersetzungen
- Pro Sprache eine Datei
- Einfache Integration
- Übersetzung zur Laufzeit möglich
- Unterstützt WeifeLuo
Aktuelle Version:
DLL: 1.1.0.0
GUI: 1.1.0.0
Arbeitsliste:
- Automatisierung zum erstellen der ersten Übersetzung
- Erstellen eine import / export Funktion für externe Übersetzungsbüros
XML:
Die Übersetzungen werden in einer XML-Datei gespeichert. Der Dateiname der Übersetzungsdatei muss wie folgt aufgebaut sein: <Assemblyname>.<CultureInfo>.xml. Beispiel: Translator.exe, Translator.de-DE.xml.
Der eigentliche Dateiaufbau ist recht simpel gestaltet:
<Translation>
<GUI>
<Translation name="mnuFile">
<Value>&File</Value>
<Description>Menupoint File.</Description>
</Translation>
</GUI>
</Translation>
Die XML-Datei hat drei unterschiedliche Kategorien: GUI für die Oberfläche, Message für Nachrichten, Code für Quellcode-Übersetzungen. Jeder einzelne Eintrag hat den key, also den Namen des Controls, in einem XMLAttribute namens "name". Die eigentliche Übersetzung ist in zwei weitere Nodes aufgeteilt, Value und Description. Aus der Value wird der Text (bzw. TabText) eines Controls, aus der Description der ToolTip.
Editor:
Der Editor ist einfach, dafür aber leicht zu handeln. Man kann mit ihm neben den Standardfunktionen "Neu / Öffnen / Schließen / Speichern / Speichern unter" auch Sonderfunktionen aufrufen. Eine davon wäre "Referenz öffnen". Im Standard hat man fünf Spalten auf der Oberfläche: Schlüssel, Referenz Übersetzung, Übersetzung, Referenz Beschreibung und Beschreibung. Mit "Referenz öffnen" kann man sich die Übersetzung von einer bereits vorhandenen einblenden lassen.
Eine weitere Sonderfunktion ist "Aktualisieren". Anhand einer anderen Übersetzungsdatei können so fehlende Übersetzungen (z. B. neu hinzugekommene Controls) in die gerade geöffnete übernommen werden.
Quellcode:
- Es muss zuerst ein Verweis auf die Datei "TranslatorDLL.dll" gesetzt werden.
- In der entsprechenden Datei muss ein "Imports Translator;" eingebaut werden.
Eine zu übersetzende Form leitet man von "frmTranslatedForm" bzw. "frmTranslatedDockContent" ab.
Für ein initiales Übersetzen der Form muss this.InitializeTranslations aufgerufen werden. Beim ändern der Übersetzung zur Laufzeit muss wiederum InitializeTranslations sowie clsTranslator.SetTranslationForControls(this) aufgerufen werden.
Übersetzungen für Messageboxen und Code können über "clsTranslator.GetMessage" bzw. "clsTranslator.GetCodeText" und danach jeweils den entsprechenden Key geladen werden.
Anbei sind die binären Dateien. Weiter unten könnt ihr eine beispielhafte Implementierung dazu finden.
Wenns sonstige Fragen oder Diskussion gibt, könnt ihr mich auch gerne unter Stefan-Aigner@web.de erreichen...
Update 1: (Mai 09) Rechtschreibfehler + Überschrift korrigiert
Update 2: (Mai 09) Hinweis zum Dateinamen hinzugefügt.
Update 3: (Mai 09) Neue Version 1.0.1.0 veröffentlicht.
Update 4: (Jun 09) Arbeitsliste eingefügt.
Update 5: (Jun 09) Versionen aktualisiert, Neuen Todo-Punkt eingetragen.
Update 6: (Sep 09) Versionen aktualisiert, Dateiaufbau + Editor überarbeitet, Datum zu der Updatelist hinzugefügt.
Update 7: (Okt 09) Arbeitsliste aktualisiert.
Update 8: (Jun 12) Veraltete Links entfernt, Text angepasst, Beispielimplementierung angehängt.