Ich habe versucht, CurrentUICulture der Anwendung zur Laufzeit zu setzen. Die Menüelemente in meinen Formularen blieben jedoch unverändert. Muss ich etwas zusätzlich zum Ändern von CurrentUICulture tun?
Aus einem Google-Suchergebnis gerippt: Ссылка
Ändern Sie "CurrentUICulture" wird nicht automatisch in allen UI-Steuerelement wirksam.
Ändern Sie "CurrentUICulture" betrifft nur einige APIs, die zur Lokalisierung gehören. Zum Beispiel "System.Resources.ResourceManager.GetString (...)", Dann verwendet es die aktuelle "CurrentUICulture", um geeignete Zeichenfolgenressourcen zu laden.
Für die Windows.Form UI-Steuerung müssen Sie alle Ressourcenzeichenfolgen neu laden, nachdem Sie die "CurrentUICulture" geändert haben.
Wenn Sie davon ausgehen, dass Ihre Ressourcen tatsächlich lokalisiert sind (Sie müssen dies manuell tun - nichts wird es für Sie automatisch tun), können Sie möglicherweise die Benutzeroberflächenkultur einstellen, bevor Sie Ihr erstes Fenster anzeigen. Z.B. in Main
.
Bearbeiten:
Stellen Sie außerdem sicher, dass Sie CurrentUICulture
im UI-Thread festlegen.
Hier ist ein Beispielcode, wie Sie Ihre Benutzeroberfläche auffrischen können (wiederum, gestohlen von dem Link oben in dieser Antwort):
%Vor% Sie können wahrscheinlich etwas davon aus InitializeComponent()
holen.
Angenommen, Sie haben VS oder ein kompatibles Dienstprogramm zum Erstellen der .resx-Dateien verwendet:
%Vor%Dies könnte Ihnen manuelle Arbeit ersparen, indem Sie alle lokalisierbaren Eigenschaften manuell setzen und auch die Überladungen von GetXXX (string) verwenden müssen.
Zumindest können Sie diesen Zyklus versuchen, nachdem Sie eine CurrentUICulture geändert haben:
%Vor%Kannst du bitte diesen unten erwähnten Code ausprobieren? Ich denke, das wird dir dabei helfen.
%Vor%Tags und Links .net c# winforms localization