TxTranslation
Einfache aber mächtige Bibliothek für Übersetzungen und Lokalisierung in .NET-Anwendungen. Unterstützt XAML-Binding, Ersatzsprachen, Anzahl-abhängige Übersetzungen, Platzhalter und Zeitformatierung.
Es dauert nur etwa 4 Minuten, um diese Seite zu lesen.
tl;dr: Die Vorteile und Funktionen im Überblick:
Das Tx-Konzept
Tx ist eine einfache aber mächtige Bibliothek für Übersetzungen und Lokalisierung in .NET-Anwendungen. Sie verwaltet ein Wörterbuch, das alle Textschnipsel und Sätze enthält, die für mehrere Übersetzungen benötigt werden. Falls für eine Sprache keine Übersetzung verfügbar ist, kann sie in anderen Sprachen gesucht werden. Texte können auch benannte Platzhalter enthalten, die zur Laufzeit mit Daten gefüllt werden, damit man nicht selbst alle Teile in der richtigen Reihenfolge zusammensetzen muss. Lokalisierungsaufgaben wie Typografie, Zahl- oder Zeitformatierung gemäß der lokalen Vorgaben werden ebenfalls abgedeckt.
Ein besonderes Merkmal von Tx-Wörterbüchern ist, dass jeder Text abhängig von einer Anzahl, um die es geht, unterschiedliche Übersetzungen haben kann, auch Pluralisierung genannt. Ein Tag ist ein anderes Wort als zwei Tage. Das erlaubt einem, den Benutzer in einer Oberfläche auf die natürlichste Art anzusprechen, ohne hässliche Klammern oder Alternativen für Pluralformulierungen.
Alle Texte und Übersetzungen werden in einer XML-Wörterbuchdatei gespeichert, eine pro Projekt. Diese XML-Datei enthält üblicherweise alle Sprachen. Das Wörterbuch kann mit der Anwendung installiert oder direkt als eingebettete Ressource einkompiliert werden.
Die TxLib-Bibliothek kann von jeder .NET-Anwendung genutzt werden und sie ist der Teil, der mit der Anwendung weitergegeben wird. Für portablere Anwendungen könnten die Klassendateien auch direkt ins Projekt eingebunden werden – es sind nur ein paar Dateien. Die Hauptklasse, Tx
, wird in der Dokumentation genauer beschrieben.
Textschlüssel
Alle Texte sind mit Textschlüsseln verbunden. Ein Textschlüssel ist eine kurze Zeichenkette, die einen Text oder Satz eindeutig identifiziert und die normalerweise im Anwendungs-Quelltext genutzt wird, um einen bestimmten Text zu verwenden. Textschlüssel können vom Entwickler frei vergeben werden, es gibt allerdings ein paar Richtlinien zur Strukturierung, die am Ende der Dokumentation beschrieben werden, sowie ein paar zusätzliche Anforderungen bei der Nutzung des TxEditor-Werkzeugs.
Kulturen
Das .NET-Framework kennt das Konzept der Kulturen, um eine Kombination aus Sprache und Datenformatierungsregeln anzugeben. Jede Kultur hat einen Code, der die Sprache und optional eine Region beschreibt. Es gibt weitere Varianten, die von TxLib aber nicht unterstützt werden. Beispiele sind „en“ für die englische Sprache, „de-DE“ für die deutsche Sprache in Deutschland oder „pt-BR“ für die portugiesische Sprache in Brasilien (und nicht in Portugal, an das viele vielleicht zuerst denken). TxLib nutzt diese Kulturen, um Übersetzungen zu identifizieren. Es werden sowohl regionsspezifische als auch nur-Sprachen-Codes verwendet, wobei letztere als Ersatz dienen, wenn für eine bestimmte Kultur keine Übersetzung gefunden wurde.
TxEditor
Die TxTranslation-Lösung bringt auch einen grafischen Übersetzungseditor mit, der alle Funktionen für Übersetzer bietet, die nicht unbedingt Programmiererfahrung haben. Die TxEditor-Anwendung kann eine Wörterbuchdatei laden, alle enthaltenen Textschlüssel anzeigen und ermöglicht das Lesen und Bearbeiten der Übersetzungstexte. Sie führt außerdem Konsistenzprüfungen durch, um potentielle Fehler anzuzeigen und fehlende Übersetzungen hervorzuheben. TxEditor nutzt selbst auch TxLib, so dass es vollständig lokalisierbar ist, und kann verwendet werden, um sich selbst in andere Sprachen zu übersetzen.
Kompatibilität:
Beispiel
Im folgenden C#-Beispiel werden mehrere Anwendungsmöglichkeiten der Tx-Klasse gezeigt.
Tx.T("my text key")
// Count-specific translations:
Tx.T("days", daysCount)
// Use of named placeholders:
Tx.T("user info", // The text key
"name", userName, // Pairs of placeholder names and values
"location", User.Location,
"status", statusValue)
// Quote text (put it in local quotation marks):
Tx.Quote(someText)
// Combine translation and quote:
Tx.QT("my text key")
// Date formatting:
Tx.Time(DateTime.Now, TxTime.MonthDayLong)
// Relative time formatting:
Tx.RelativeTime(someTime)
// Bonus: ISO 8601 time interval handling:
new DateTimeInterval(DateTime.Now, "PT3H25M").TimeSpan
// Dictionary culture listing (returns string[]):
Tx.AvailableCultureNames
Im folgenden XAML-Beispiel werden mehrere Anwendungsmöglichkeiten der WPF-Bindings gezeigt.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Tx="http://unclassified.software/source/txtranslation" ...>
<StackPanel>
<TextBlock Text="{Tx:T my text key}"/>
<TextBlock Text="{Tx:T n months, {Binding Value, ElementName=Counter}}"/>
<TextBlock Text="{Tx:Number {Binding Power}, 3, Unit=kW}"/>
<TextBlock Text="{Tx:DataSize {Binding FileSize}}"/>
<TextBlock Text="{Tx:Time {Binding LastUpdate}, Details='DowLong,YearMonthDay'}"/>
</StackPanel>
Die Dokumentation (docx und pdf im Code-Repository) beschreibt sowohl die Verwendung der TxLib-Methoden als auch des TxEditors ausführlicher.
Bilder
Hier sind einige Screenshots der TxEditor-Anwendung:
Download
Hinweis: Veröffentlichungen nach dem 9.1.2016 sind nicht mehr digital signiert, da keine kostenlosen Code-Signing-Zertifikate für Open-Source-Entwickler mehr angeboten werden. Ein kommerzielles Zertifikat ab 200 € pro Jahr lohnt sich hier nicht. Entschuldigung für die Verunsicherung beim nächsten Download.
TxChanges.txt2,3 KiBÄnderungen der veröffentlichten Versionen
master.zipAktueller Quelltext direkt von GitHub
Vorherige VersionenTxSetup-1.383.76_da9f9b.exe1,7 MiBVersion 1.383.76 vom 2016-01-19, Commit da9f9b
TxSetup-1.184.37_7f3858.exe1,7 MiBVersion 1.184.37 vom 2015-07-04, Commit 7f3858
TxSetup-1.113.79_b4ffb0.exe1,7 MiBVersion 1.113.79 vom 2015-04-24, Commit b4ffb0
TxSetup-1.53.78_a21990.exe1,7 MiBVersion 1.53.78 vom 2015-02-23, Commit a21990
TxSetup-2fjy.0ee169.exe1,7 MiBVersion 2fjy vom 2015-01-28, Commit 0ee169
TxSetup-26w6.35374c.exe1,7 MiBVersion 26w6 vom 2014-11-16, Commit 35374c
TxSetup-21pr.407c11.exe1,7 MiBVersion 21pr vom 2014-09-21, Commit 407c11
TxSetup-207t.4c2590.exe1,6 MiBVersion 207t vom 2014-09-05, Commit 4c2590
Du kannst dir auch frühere Versionen bei GitHub herunterladen oder in die Aufgabenliste schauen:
TxTranslation-Repository bei GitHub
Dieses Paket ist auch über NuGet verfügbar. Auf diesem Weg kann es besonders schnell in ein Visual-Studio-Projekt eingebunden und später aktualisiert werden. Hier ist nur das TxLib-Assembly für .NET 4.0 enthalten. Um den TxEditor zu installieren, muss das oben genannte Setup-Programm heruntergeladen werden.
Unclassified.TxLib-Paket bei NuGet
Aktueller Entwicklungsstand
TxLib and the dictionary file format are now considered stable but little tested yet. There are plans for future additional features but no API change.
TxEditor is still new and also incomplete. Some indicated functions are missing or stop working in some conditions. The user interface is not yet rock-solid or even very clean. This is currently being improved.
The documentation is almost complete, but some sections about unfinished parts in TxEditor are also missing. The source code reference is not ready for the public yet, use the inline comments through IntelliSense instead (original source code or .xml file).
Änderungen
- TxEditor: Text key wizard: Preset language from current file type in the Visual Studio editor
- TxEditor: Text key wizard: ASP.NET Razor .cshtml files are handled for code and content text
- TxEditor: Text key wizard: "Add colon" option when one was found in the text
- TxEditor: Text key wizard: Skip unused placeholders in code generation
- TxEditor: Text key wizard: Enter key in "Similar texts" list select key instead of clicking the OK button
- TxEditor: Text key wizard: Fixed file extension recognition for unsaved files (* after file name)
- TxEditor: Text key wizard: Fixed parsing end of string quote within one level of parentheses in code
- TxEditor: Load files selection: Double click opens file when the list is complete
- TxEditor: Load files selection: Automatically load only found file with /scan option
- TxEditor: Consider ellipsis character for inconsistent punctuation
- TxEditor: Only accept numeric values in count and module fields
- TxEditor: Avoid flickering of main window after closing text key wizard dialog
- TxEditor: Writing XML comment with TxEditor download link into .txd files
- Updated documentation (docx only)
- TxEditor: Copy text key to clipboard from the context menu
- TxEditor: Text key wizard: Support for C# 6 interpolated strings
- TxEditor: Text key wizard: C# 6 string parsing, accelerator keys
- TxLib: Obfuscation compatibility for XAML use
- Shared code update and cleanup, updated formatting to new style guide
- Update to Visual Studio 2015
- TxLib: Fix: .txd file is not reloaded when saved with TxEditor
- Allow disabling special verbose single-unit texts in Tx.TimeSpanRaw for generic use
- Build script and tools updated
First log entry in this file.
Alle Änderungen lassen sich detailliert in der Commit-History des Git-Repositorys nachlesen.
Lizenz und Nutzungsbedingungen
Die TxLib-Bibliothek, die in Anwendungen verwendet wird, wird unter den Bedingungen der GNU-LGPL-Lizenz Version 3 veröffentlicht. Die anderen Projekte (TxEditor, Demos und Konverter) werden unter den Bedingungen der GNU-GPL-Lizenz Version 3 veröffentlicht. Die genauen Lizenzbedingungen befinden sich im Download oder auf der GNU-Website (LGPL, GPL).
Statistische Daten
- Erstellt am 2013-07-01, aktualisiert am 2016-01-26.
- Ca. 15 300 Codezeilen, geschätzte Entwicklungskosten: 15 000 - 61 000 €