gpt4 book ai didi

c# - 如何检测 WinForms 中的可本地化属性?

转载 作者:太空狗 更新时间:2023-10-29 19:44:32 24 4
gpt4 key购买 nike

Somewhere else ,有人指出无法本地化控件的“可见”属性。这是对的一半。但是,“可见”属性的 LocalizableAttribute 设置为 true。但这仅仅意味着该属性被序列化到资源文件中。我编写了一个测试程序,该程序将不变文化的标签的可见属性设置为“false”。为了使表单可本地化,我针对德国文化将可见属性更改为“true”。现在,如果我在系统设置为德语语言环境的情况下启动程序,会发生什么情况?标签保持不可见。检查资源文件 Form1.de.resx 我可以看到 visible 属性没有被序列化。但是如果我手动将它添加到资源文件中:

<data name="label1.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>

标 checkout 现。我承认有点困惑。两个问题:

  • 如何使用内置序列化程序检测属性是否“真正”可本地化?
  • 覆盖默认行为的推荐方法是什么?

编辑:也许我需要澄清我的问题。我的示例程序是一个简单的表单,默认语言设置为不变。我通过表单设计器手动添加了德语资源。程序在区域设置设置为德语的系统上运行。

案例一

添加到表单的面板的“可见”属性:
1.) 在不变文化中设置为 false,在德国文化中设置为 true(默认)。 => 面板不可见
2.) 在不变文化中设置为真,在德国文化中设置为假。 => 面板不可见(按预期工作)
显然,如果不是默认值,该值只会写入特定于语言的资源文件。

案例二

添加到表单的标签的“字体”属性:
1.) 在不变文化中设置为粗体,在德国文化中属性重置为默认值。 => 标签不是粗体
2.) 在不变文化中设置为默认值,在德国文化中设置为粗体。 => 标签是粗体
现在这里的属性按预期序列化。

这是一个错误还是我遗漏了什么?

最佳答案

我们已收到微软的回复:

I can see that this can be a problem for this localization scenario, but in general case, this is the way to greatly reduce the size of a resx file, so we would not want to change this implementation. This design flaw does not meet our current bar, so this will not be fixed in the next release.

所以答案是:目前没有解决方案。

关于c# - 如何检测 WinForms 中的可本地化属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com