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

时间:2010-09-22 12:47:43

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

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

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

1 个答案:

答案 0 :(得分:0)

自定义控件我认为很明显的原因是默认情况下无法本地化,这种控制的作者必须要处理这个问题。一些自定义控件具有布尔Localizable属性,该属性控制控件是否将其消息写入资源文件,但我认为这不是这种情况。

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