Lokalisierungsprobleme bei Adaptern
In den folgenden Themen finden Sie Informationen zu Lokalisierungsproblemen bei der Entwicklung benutzerdefinierter Adapter.
XSD-Probleme
Mithilfe des Adapterframeworks können Adapterentwickler Adaptereigenschaftenseiten mit XSD-Schemas (XML-Schemadefinition) implementieren.
Wenn ihr Adapter keine Globalisierungs- oder Lokalisierungsanforderungen hat, können Sie die XSD-Schemazeichenfolge in der Funktion IDynamicAdapterConfig:GetConfigSchema hartcodieren.
Wenn für Ihren Adapter eine Globalisierung oder Lokalisierung erforderlich ist, können Sie das XSD-Schema auf zwei Arten implementieren.
Verwenden Sie separate XSD-Dateien außerhalb des Binärcodes zur Entwurfszeit. Legen Sie den gesamten Text des Schemas als Manifestressource fest.
Ersetzen Sie dynamisch die Eigenschaftsnamen und -beschreibung der Ressource:
Fügen Sie jedem Element, das Sie lokalisieren möchten, eine _locID hinzu.
Verwenden Sie einen xpath, um alle Knoten des Schemas mit dem Attribut _locID zurückzuziehen.
Suchen Sie in den Ressourcen nach einer Zeichenfolge, die mit dem Wert der _locID indiziert ist.
Ersetzen Sie den Knotentext durch das Ergebnis.
Der folgende Code ist ein Beispiel für die zweite Option:
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;
}