Saturday, October 12, 2013

winform localization problem / Windows Forms Lokalisierungs Problem

I hade a User Control, where I set Localizable=True and switched from Language=Default to Language=English, and put the english translation into all my german labels. Then I switched back to Default Language, and all the translations remained there, I had lost all my default german labels. Finaly I found the reason: The Winform Code Generator had an error (...the value 0 is not valid for the property ...): it tried to set a enum property of a sub user control  to 0, which didn't work. As result, it stopped generating an english resource file (usercontolname.en.resx). So I decorated the Enum property with a Default Attrivute:
[DefaultValue(myenum.forWinFormGenerator)]
and everything worked fine. Conclusion: If there is a code generation error in WinForm, localisation will not work.

Ein Usercotrol machte probleme beim Lokalisieren: Als ich Localizable=True einstellte und von der Default Language zu Englisch wechselte, mein Übersetzungen für die Labels eingab und wieder zurückwechselte auf die Default Language, waren all meine deutschen Labels weg, und es blieben die englischen Übersetzungen stehen. Ursache war ein Code Generations Fehler: Der WinForm Code Generator versuchte einem Enum Property eines Sub User Controls den Wert 0 zuzuweisen - und brach dann die weitere Generation ab, generierte also auch kein Englisches Resource File (usercontolname.en.resx), sondern schrieb die Übersetzungen ins Default resx über die deutschen Labels.
Lösung: Ich vergab ein DefaultValue Attribut für die enum Eigenschaft des Sub User Controls, und der Code generator areitete fehlerfrei:
[DefaultValue(myenum.fueWinFormGenerator)]

No comments: