Sprachabhängige Labeltexte in einer Datei ?
-
Hallo,
gabs es bei C# 2010 eine Möglichkeit, dass alle sprachabhängigen Labeltexte in eine Ressourcendatei zu speichern? Und zwar so, dass die einzelnen Sprachen in verschiedenen Spalten sind.
Ich würde dann diese Datei in Excel exportieren wollen, und zum Beispiel zum Übersetzen weiter geben.
-
Das Modell von VS ist eigentlich, die Sprachen in verschiedene resx-Dateien auszulagern. Eine Möglichkeit mehrere Sprachen in eine Datei zu packen ist mir nicht bekannt.
Ich wollte Dir auch nur folgenden Tipp geben: Verzichte auf resx-Dateien pro Form und lagere am besten alle Strings einer Sprache in jeweils eine einzelne Ressourcendatei aus. In früheren Projekten fand ich das Schema "resx pro Form" (und unter Umständen noch weitere Dateien für gemeinsam verwendete strings) sehr toll(*) und habe mich damit selbst in eine Wartungshölle manövriert. Auch ist die Wiederverwendbarkeit von Formgebundenen resx bei genau Null.
Um es den Übersetzern (und mir) einfacher zu machen, habe ich einfach ein kleines Tool geschrieben: Simple Form mit DataGridView, in welches die Texte aus den resx eingelesen werden. Darin können die Leute ihre Übersetzungen eintragen und mir den ganzen Kladderadatsch per Mail zurückschicken. Imho einfacher, als einen Resx <-> Excel Konverter zu schreiben.
(*) Wegen der Möglichkeit weitere Control-Properties, wie die Größe oder Position, sprachabhängig in Ressourcendateien auszulagern. Macht aber nur Probleme und viel Aufwand, weil Änderungen im Designer damit ebenfalls sprachabhängig sind.
-
hallo µ,
vielen Dank für die ausführliche Antwort. Jetzt wird mir einiges klarer.
Gruß
sonic
-
Wir haben damals für eine Anwendung für das .NET Compact Framework einen meiner Ansicht nach sehr coolen Weg für die Lokalisierung gefunden.
Wir haben eine von Form abgeleitete Basisklasse erstellt, welche folgende Funktionalität hatte:
- Laden einer Xml-Datei
- Setzen der Labeltexte (je nach Region)Die Xml-Datei hatte anschließend folgendes Format:
<Forms> <!-- FormLogin ist der Name der Login Form --> <FormLogin> <!-- Key an dem wir Label, Textbox oder was auch immer erkennen --> <Key>Title</Key> <!-- Wert der für das Label, die Textbox o.ä. gesetzt wird --> <Value>Benutzeranmeldung</Value> <!-- Typ des Controls --> <Type>Label</Type> </FormLogin> <FormLogin> <Key>UserName</Key> <Value>Benutzername</Value> <Type>Label</Type> </FormLogin> .... <AndereForm> <Key>Title</Key> <Value>Daten erfassen</Value> <Type>Label</Type> </AndereForm> <AndereForm> <Key>Save</Key> <Value>Speichern</Key> <Type>Button</Type> </AndereForm> </Forms>
Das mag zu Beginn schwierig aussehen, ist aber im nachhinein recht cool. Direkt für Windows Forms habe ich es jedoch noch nicht eingesetzt.
-
Sieht interessant aus. Ich werde es aber doch bei den Standard-Dateien belassen, weil ich im Moment noch viele andere Sachen zum Laufen bringen muss
Danke für die Antwort.Gruß
Sonic