Irgendwo anders , sagt jemand dass die Eigenschaft "Visible" eines Steuerelements nicht lokalisiert werden kann. Das ist halb wahr. Bei der Eigenschaft "Visible" ist LocalizableAttribute jedoch auf true festgelegt. Das bedeutet jedoch nur, dass die Eigenschaft in die Ressourcendatei serialisiert ist. Ich habe ein Testprogramm geschrieben, bei dem die sichtbare Eigenschaft eines Labels für Invariant Culture auf "false" gesetzt ist. Indem ich die Form lokalisierbar machte, änderte ich die sichtbare Eigenschaft für die deutsche Kultur auf "wahr". Was passiert nun, wenn ich das Programm mit dem System auf Deutsch starte? Das Etikett bleibt unsichtbar. Überprüfen der Ressourcendatei Form1.de.resx Ich kann sehen, dass die sichtbare Eigenschaft nicht serialisiert wurde. Aber wenn ich das manuell zur Ressourcendatei hinzufüge:
%Vor%Das Label erscheint. Ich gebe zu, etwas verwirrt zu sein. Zwei Fragen:
Bearbeiten : Vielleicht muss ich meine Frage klären. Mein Beispielprogramm ist ein einfaches Formular, bei dem die Standardsprache auf invariant gesetzt ist. Ich habe manuell deutsche Ressourcen über den Formular-Designer hinzugefügt. Programm läuft auf einem System mit regionalen Einstellungen auf Deutsch.
Fall 1
" Sichtbar " Eigenschaft eines dem Formular hinzugefügten Panels:
1.) in Invariant culture auf false gesetzt, true (default) in der deutschen Kultur. = & gt; Panel ist unsichtbar
2.) in der unveränderten Kultur auf wahr gesetzt, in der deutschen Kultur falsch. = & gt; Panel ist unsichtbar (funktioniert wie erwartet)
Anscheinend wird der Wert nur in die sprachspezifische Ressourcendatei geschrieben, wenn dies nicht der Standardwert ist.
Fall 2
" Font " Eigenschaft eines Labels, das dem Formular hinzugefügt wurde:
1.) in Invariant culture auf fett gesetzt, Eigenschaft wird in der deutschen Kultur auf default zurückgesetzt. = & gt; Label ist nicht fett
2.) als Standard in Invariante Kultur, fett in der deutschen Kultur. = & gt; Etikett ist fett gedruckt
Jetzt werden die Eigenschaften wie erwartet serialisiert.
Ist es ein Fehler oder fehlt mir etwas?
Wir haben eine Antwort von Microsoft erhalten:
Ich kann sehen, dass dies ein Problem sein kann für dieses Lokalisierungsszenario, aber in allgemeiner Fall, dies ist der Weg zu stark reduzieren die Größe eines Resx Datei, also würden wir nicht ändern wollen diese Implementierung. Dieser Designfehler trifft unsere aktuelle Bar nicht, also diese wird in der nächsten Version nicht behoben werden.
Die Antwort lautet also: Es gibt derzeit keine Lösung.
Das funktioniert gut, wenn ich es versuche. Schritte zum Testen:
hat den Konstruktor folgendermaßen geändert:
%Vor%Das Textfeld ist nicht sichtbar, wenn ich das Formular ausführe. Ich habe die CurrentUICulture-Zuweisung auskommentiert, um wieder auf Englisch umzuschalten: Textfeld ist sichtbar.
Ich glaube nicht, dass Microsoft dies als einen Fehler klassifizieren würde. Es funktioniert wie geplant; aber es ist definitiv ein Schmerz im Nacken.
Es gibt keine einfache Lösung, die mir bewusst ist, dass ich das Label-Steuerelement nicht unterteilen und Eigenschaften hinzufügen kann - yuck.
Als Workaround könnten Sie einfach die Width- oder Text-Eigenschaften anstelle der Sichtbarkeit einstellen?
Ich glaube immer noch, dass die Visible-Eigenschaft nicht lokalisierbar ist. Es wird immer auf seine Einstellung für die Standardsprache zurückgesetzt, wenn ich zur Standardsprache und dann zurück in die spezifische Sprache umschalte, egal, ob es sich um eine Standardeinstellung handelt oder nicht.
Tags und Links c# winforms localization