2016-09-23 3 views
0

Ich habe eine winform, C# -Anwendung, die ich in lokalisierten Sprachen ausgeführt haben möchte. Das Ziel .Net ist 3.0, da viele meiner Benutzer XP noch benutzen. Die Anwendung ist eine System-Tray-Anwendung.Warum wird meine Anwendung nicht in die lokale CurrentUICulture übersetzt?

Ich habe alle Zeichenfolgen in eine Resources.resx geschrieben und Resources.XX.resx Dateien für die verschiedenen Sprachen generiert, die ich brauche, mit ResX Resource Manager.

Wenn ich die CurrentUICulture in einer anderen Sprache (das heißt Finnish) mit dem Code:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fi-FI"); 

Es funktioniert wie erwartet und zeigt alle Formen in finnischen.

Allerdings, wenn ich die Anwendung auf einer Maschine mit der Sprache eingestellt, wie finnisch alle des WinForms kommen mit te englischen Strings (Englisch ist auch der neutrale string)

ich überprüft habe, installieren, dass die Formulare die Eigenschaft haben, lokalisierbar auf wahr gesetzt.


Warum es nicht funktioniert, wenn ich die CurrentUICulture hart codieren, aber nicht, wenn ich es nicht tun?

Gibt es eine alternative Möglichkeit, die Benutzeroberflächensprache des PCs zu überprüfen und die Anwendung CurrentUICulture zu aktualisieren?

+0

Sicherstellen, dass die Satelliten-Baugruppen zum Einsatz in der Nähe von der Anwendung auf Client-Rechnern angezeigt werden soll. –

+0

Wenn Sie "Thread.CurrentThread.CurrentUICulture" auf "new CultureInfo" ("fi-FI") setzen? Was bedeutet es: * Warum funktioniert es, wenn ich die 'CurrentUICulture' fest codiere, aber nicht wenn nicht? * –

+0

Ich teste auf meinem Entwicklungs-PC, indem ich eintippe: Thread.CurrentThread.CurrentUICulture = new CultureInfo ("fi-FI"); am Anfang von program.cs Jedoch, wenn ich die oben genannte Linie entferne und auf einen PC setze, der auf finnisch läuft, erscheint der Text auf Englisch. – Luke

Antwort

1

enter image description here können Sie einstellen, Suchen und Sprache auf der Form, wird es durch die Sprache von Fenstern

+0

Hallo @DT, danke für deine Antwort + 1.Ich habe diese bereits ausgewählt. Um dies zu implementieren, muss ich jedes Formular resx separat aktualisieren? Habe ich recht? Momentan versuche ich, ein resx unter Eigenschaften zu haben, da es eine Anzahl von Zeichenfolgen gibt, die in Multipile-Formularen verwendet werden, um Übersetzungen zu minimieren. Wenn Sie so vorgehen, benötigen Sie etwa 5 Resx-Ordner. – Luke

+0

Ja, Sie haben Recht. –

+0

Gibt es eine Möglichkeit, die Datei form.resx auf die Ressourcen.resx-Dateien zu verweisen? Oder ändern Sie die Formularreferenzierung so, dass sie auf resources.resx statt auf form.resx verweist? – Luke

Verwandte Themen