适配器本地化问题

下列主题涉及您在开发自定义适配器时可能遇到的本地化问题。

XSD 问题

通过使用适配器框架,适配器开发人员可以实现具有 XML 架构定义 (XSD) 架构的适配器属性页。

如果适配器没有全球化或本地化要求,则可以在 IDynamicAdapterConfig:GetConfigSchema 函数中对 XSD 架构字符串进行硬编码。

如果您的适配器具有全球化或本地化方面的要求,则可以采用以下两种方式之一实现 XSD 架构。

  • 在设计时二进制文件之外使用单独的 XSD 文件。 将架构的全部文本作为清单资源。

  • 动态替换资源中的属性名称和说明:

    • 将 _locID 添加到要本地化的每个元素。

    • 使用 xpath 拖回架构中具有 _locID 属性的所有节点。

    • 在资源中查找使用 _locID 值作为索引的字符串。

    • 用结果替换节点文本。

    以下为第二个选项的示例代码:

string mySchema = GetSchemaFromResource(“mySchema”);  
string myLocalizedSchema = LocalizeSchemaDOM (mySchema, resourceManager);  
//  where…  
protected string GetSchemaFromResource (string name)  
{  
Assembly assem = this.GetType().Assembly;  
Stream stream = assem.GetManifestResourceStream(name);  
StreamReader reader = new StreamReader(stream);  
string schema = reader.ReadToEnd();  
return schema;  
}  
  
protected XmlDocument LocalizeSchemaDOM (string schema, ResourceManager resourceManager)  
{  
XmlDocument document = new XmlDocument();  
document.LoadXml(schema);  
XmlNodeList nodes = document.SelectNodes  
("/descendant::*[@_locID]");  
foreach (XmlNode node in nodes)  
{  
string locID = node.Attributes["_locID"].Value;  
node.InnerText = resourceManager.GetString(locID);  
}  
return document;  
}