Wie können lokalisierbare Eigenschaften in WinForms erkannt werden?

8

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:

  • Wie kann ich feststellen, ob eine Eigenschaft mit dem eingebauten Serializer "wirklich" lokalisiert werden kann?
  • Was ist die empfohlene Methode zum Überschreiben des Standardverhaltens?

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?

    
puls200 18.05.2011, 13:45
quelle

4 Antworten

2

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.

    
puls200 27.06.2011, 07:25
quelle
1

Das funktioniert gut, wenn ich es versuche. Schritte zum Testen:

  • löscht eine TextBox auf dem Formular
  • Setzen Sie die Localizable-Eigenschaft des Formulars auf True
  • setze die Sprache des Formulars auf Afrikaans
  • Setzen Sie die sichtbare Eigenschaft von TextBox auf True
  • 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.

    
Hans Passant 26.05.2011 12:10
quelle
0

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?

    
codeConcussion 26.05.2011 02:30
quelle
0

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.

    
LoBo 26.05.2011 08:40
quelle

Tags und Links