在另一个问题中,我询问了deploying localizations for some runtime compiled UserControl
's。但是,在我可以部署本地化之前,我需要一种本地化控件的方法。
控件由我们自己的WinForms风格的设计器创建(使用.NET对设计图面的支持等)并保存为二进制格式,将CodeCompileUnit
,资源resx和用户源合并到一个文件中。然后,这些文件在运行时由另一个工具适当地编译到程序集中。
为了本地化这些,我们需要告诉设计者和序列化,可本地化的属性值将存储在资源中。 VisualStudio WinForms设计器使用名为Localizable
的扩展属性和用于指定默认区域性的关联属性来执行此操作。如果可能的话,我们需要在我们的自定义设计器中使用此属性。
我们需要我们的独立设计器工具,它非常容易用于非开发人员类型以及限制某些操作,因此使用免费版的Visual Studio(即C#Express)是行不通的(我已经投入使用它了)并且失败了);因此,我们如何本地化这些UserControl的需求来解决这个问题。
我们可以在我们的自定义WinForms设计器中获得Localizable支持吗?
UserControl
的本地化有哪些替代方案?例如以某种方式后处理,不同的文件格式等。答案 0 :(得分:3)
我不确定我是否理解你的问题。
如果您的控件是可本地化的,只需检查所有属性的System.ComponentModel.LocalizableAttribute(de-)序列化。
// Gets the attributes for the property.
AttributeCollection attributes =
TypeDescriptor.GetProperties(this)["MyProperty"].Attributes;
// Checks to see if the property needs to be localized.
LocalizableAttribute myAttribute =
(LocalizableAttribute)attributes[typeof(LocalizableAttribute)];
if(myAttribute.IsLocalizable) {
// Insert code for handling resource files here.
}
既然你决定自己编写设计师,那么你必须自己动手。
答案 1 :(得分:1)