【问题标题】:Cannot localize (translate) a custom control in .NETCF 2.0无法本地化(翻译).NETCF 2.0 中的自定义控件
【发布时间】:2010-09-22 23:27:57
【问题描述】:

我在 Visual Studio 2005 中翻译一个紧凑的框架 2.0 windows 窗体。为此,我将窗体的语言更改为德语(目标语言)并编辑/调整窗体上的控件大小。这会按预期创建一个包含已翻译字符串的 resources.de.resx 文件。

但是,表单上有一个自定义控件,它有一个名为 GroupText 的属性,它也必须被翻译。但是,表单设计器拒绝使用该属性的资源文件。每当我在属性编辑器中更改属性时,它都会针对所有语言进行更改。我检查了 resx 文件 - 它们不包含 GroupText 属性,并且设计器生成的代码也不使用 resx 文件来处理此属性。

有没有办法为自定义控件启用基于 resx、Visual Studio 支持的本地化?

编辑:

作为已接受答案的补充,您必须执行以下操作才能获取 resx 文件以使自定义控件正常工作。

应该进入 resx 文件的每个属性都必须将 Localizable 属性设置为 true。现在,CF 不通过通常的括号语法支持此属性。你不能只在cs源文件中写[Localizable=true]。您必须在项目中创建一个名为DesignTimeAttributes.xmta 的单独文件并添加以下内容:

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
<Class Name="MyControl">
  <Property Name="MyProperty">
    <Localizable>true</Localizable>
  </Property>
</Class>

重建包含控件的程序集后,Visual Studio 会将属性值放入 resx 文件中。

【问题讨论】:

    标签: c# winforms visual-studio-2005 localization compact-framework


    【解决方案1】:

    自定义控件我认为很明显的原因是默认情况下不可本地化,此类控件的作者必须注意这一点。一些自定义控件具有布尔 Localizable 属性,该属性控制控件是否将其消息写入资源文件,但我认为这里不是这种情况。

    如果您要翻译的文本可以通过属性或构造函数访问,您可以创建自己的 *.resx 文件并在创建期间分配此文本。如果不是,恐怕你倒霉了。

    【讨论】:

    • 带有 Localizable-attribute 的提示足以让它工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多