了解本地化=在resx文件中正确跟踪哪些属性更改

时间:2018-12-29 15:40:55

标签: c# .net winforms localization windows-forms-designer

我对本地化有一定的了解,希望能对您有所帮助。

我创建一个Winform应用程序:

  1. 添加按钮
  2. 将表单Localizable属性设置为True
  3. 将表单Language设置为西班牙语
  4. 将按钮的Text更改为“ Vamos”,将BackColor更改为“绿色”。
  5. 将表单Language设置为英语
  6. 将按钮的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中进行了测试]

1 个答案:

答案 0 :(得分:1)

如果属性以Localizable(true)属性修饰,则该属性被视为可本地化。例如,BackColor属性不可本地化,但是Text属性可本地化。

当设计者为您的表单生成代码时,如果您为表单启用了本地化,则用Localizable(true)装饰的属性将被序列化到表单的资源文件中。对于其他属性,其值将在代码中序列化。

有关更多信息以及如何创建多语言Windows格式应用程序的链接,请查看: