Ich habe versucht, Anwendungen für mehrere Sprachen in C # geeignet zu machen, da ich an einem kleinen Projekt arbeiten muss, in dem dies der Fall ist. Ich habe grundsätzlich zwei Möglichkeiten gefunden, dies zu tun:
Setzen Sie die Localizable-Eigenschaft eines Formulars auf true, setzen Sie die Language-Eigenschaft, füllen Sie alle Beschriftungen und dergleichen aus, und schon sind Sie fertig. Der Hauptnachteil, den ich darin sehe, ist: wie man andere Dinge, die nicht Teil eines Formulars sind, für mehrere Sprachen bereit macht (z. B. Popup-Fenster, Protokolldateien oder Fenster usw.).
Erstellen Sie eine Ressourcendatei, zum Beispiel 'Lang.en-us.resx' und eine für jede Sprache, zum Beispiel 'Lang.nl-nl.resx', und füllen Sie sie mit Strings. Die IDE scheint automatisch eine Klasse für mich zu generieren, daher kann ich im Code nur Lang.SomeText verwenden. Der größte Nachteil, den ich darin sehe, ist: Für jedes Formular muss ich alle Beschriftungen und anderen Beschriftungen selbst im Code festlegen (und es scheint, dass die Datenbindung mit diesen Ressourcen nicht funktioniert).
Ich bin mir jedoch sicher, dass es auch andere Methoden gibt, um dies zu tun.
Was ist die beste Vorgehensweise? Was ist für kleine Anwendungen am einfachsten (einige Formulare, Datenbankverbindung usw.) und was lässt sich für größere Anwendungen am besten skalieren?
quelle
Antworten:
Ich habe immer Ressourcendateien für mehrsprachige Anwendungen verwendet.
Es gibt viele Artikel im Web, die erklären, wie man sie benutzt.
Ich habe zwei verschiedene Wege benutzt:
Die Ressourcendatei / das Formular ist einfacher zu implementieren. Sie müssen nur die Werte in die Ressourcendatei eingeben. Ich finde es jedoch schwieriger, diesen Ansatz beizubehalten, da die Beschriftungen in der gesamten Anwendung verteilt sind.
Mit der globalen Ressourcendatei können Sie alle Beschriftungen (Bilder usw.) in einer Datei (pro Sprache) zentralisieren. Sie müssen jedoch die Beschriftungen beim Laden des Formulars manuell festlegen. Diese Datei kann auch für Fehlermeldungen usw. verwendet werden.
Eine Frage des Geschmacks ...
Ein letzter Punkt, ich schreibe Programme in Englisch und Französisch, ich benutze "en" und "fr" und nicht "en-US" und "fr-FR". Machen Sie die Dinge nicht komplizierter, die verschiedenen Dilelects des Englischen (Amerikanisch, Englisch, Australisch usw.) weisen nur wenige Unterschiede auf, um nur einen zu verwenden (das gleiche gilt für Französisch).
quelle
Ich habe kürzlich ein Programm mit deutscher und englischer Unterstützung geschrieben. Ich war überrascht herauszufinden, dass wenn ich einfach meine englischen Ressourcen LanguageResources.resx und meine deutschen Ressourcen LanguageResources.de.resx nannte, automatisch die richtige Sprache ausgewählt wurde. Der ResXFileCodeGenerator hat sich für mich um alles gekümmert.
Beachten Sie, dass die Felder in den beiden Dateien identisch waren und alle noch nicht eingegebenen deutschen Felder in der Anwendung als Englisch angezeigt werden, da die Standarddatei die unspezifischste Dateisprache ist. Bei der Suche nach einer Zeichenfolge geht es von der spezifischsten (z. B. de-DE.resx) zur am wenigsten spezifischen (z. B. .resx).
Verwenden Sie die Aufrufe ResourceManager.GetString oder ResourceManager.GetObject, um an Ihre Zeichenfolgen zu gelangen. Die Anwendung sollte Ihnen den ResourceManager kostenlos zur Verfügung stellen.
quelle
Zum Nutzen anderer, die möglicherweise darauf stoßen (1+ Jahre nach dem letzten Beitrag), bin ich Autor eines professionellen Lokalisierungsprodukts, das den gesamten Übersetzungsprozess extrem einfach macht. Es ist ein Visual Studio-Add-In, das alle ".resx" -Strings aus einer beliebigen Lösung extrahiert und in eine einzelne Datei lädt, die mit einer kostenlosen eigenständigen Anwendung übersetzt werden kann (Übersetzer können diese von meiner Website herunterladen). Das gleiche Add-In importiert dann die übersetzten Zeichenfolgen zurück in Ihre Lösung. Sehr einfach zu bedienen mit vielen integrierten Sicherheitsvorkehrungen, vielen Schnickschnack und Online-Hilfe (Sie werden es nicht viel brauchen). Siehe http://www.hexadigm.com
quelle