我对本地化有一定的了解,希望能对您有所帮助。
我创建一个Winform应用程序:
Localizable
属性设置为True Language
设置为西班牙语Text
更改为“ Vamos”,将BackColor
更改为“绿色”。 Language
设置为英语Text
更改为“转到”,将BackColor
更改为“黄色”。当我在Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("es");
和Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
之间切换时,按钮Text
确实从“ Vamos”变为“ Go”,但是BackColor
始终设置为“ Yellow”。
我的推论是Localizable = True
跟踪[control] .Text属性的更改以及其他更改,例如[control] .Location和[control] .Size,但不跟踪[control] .BackColor或许多相应的resx文件中的其他控件属性更改。
这是一个错误吗?是否有参考文档来了解对IS和ISN的跟踪情况?我可以理解,BackColor并不是通常与语言更改相关的东西,但是在此基础上,大小和位置也不应该是...。因此,我不清楚此处应用的原理...
由于这个限制,我不得不通过resx文件进行某些本地化更改,而通过我的on逻辑手动进行其他更改,感觉有些混乱。
感谢您的帮助。 [以相同的性能在VS 2012和2017中进行了测试]
答案 0 :(得分:1)
如果属性以Localizable(true)
属性修饰,则该属性被视为可本地化。例如,BackColor
属性不可本地化,但是Text
属性可本地化。
当设计者为您的表单生成代码时,如果您为表单启用了本地化,则用Localizable(true)
装饰的属性将被序列化到表单的资源文件中。对于其他属性,其值将在代码中序列化。
有关更多信息以及如何创建多语言Windows格式应用程序的链接,请查看: