어댑터 지역화 문제
다음 항목에서는 사용자 지정 어댑터를 개발할 때 발생할 수 있는 지역화 문제에 대해 설명합니다.
XSD 문제
어댑터 개발자는 어댑터 프레임워크를 사용하여 XSD(XML 스키마 정의) 스키마가 있는 어댑터 속성 페이지를 구현할 수 있습니다.
어댑터에 세계화 또는 지역화 요구 사항이 없는 경우 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;
}