代码之家  ›  专栏  ›  技术社区  ›  TheFogger

无法在.NETCF 2.0中本地化(翻译)自定义控件

  •  0
  • TheFogger  · 技术社区  · 14 年前

    我正在visualstudio2005中翻译一个紧凑的framework2.0windows窗体。为此,我将窗体的语言更改为德语(目标语言),并编辑/调整窗体上的控件大小。这将创建一个资源.de.resx包含预期翻译字符串的文件。

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

    有没有一种方法可以为自定义控件启用基于resx的、visualstudio支持的本地化?

    编辑:

    作为公认答案的补充,下面是让自定义控件的resx文件正常工作所必须做的。

    Localizable 属性设置为 true . 现在,CF不通过通常的括号语法支持这个属性。你不能只写 [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>
    

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Paweł Dyda    14 年前

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