다음을 통해 공유


어댑터 지역화 문제

다음 항목에서는 사용자 지정 어댑터를 개발할 때 발생할 수 있는 지역화 문제에 대해 설명합니다.

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;  
}