다국어 사용자 인터페이스에서 어셈블리 사용
애플리케이션 또는 핵심 DLL의 사용자가 사용자 인터페이스의 언어를 변경할 수 있도록 하려면 언어 리소스를 별도의 위성 리소스 DLL에 배치하는 것이 좋습니다. 위성 리소스 DLL 사용에 대한 자세한 내용은 MUI(다국어 사용자 인터페이스)를 참조하세요.
각 위성 DLL에는 다른 언어에 대한 리소스가 포함되어 있습니다. 코어 DLL은 어셈블리로 제공될 수 있으며 각 위성 DLL은 별도의 위성 어셈블리로 제공될 수 있습니다. 이 경우 각 위성 어셈블리에는 자체 설명 어셈블리 매니페스트가 있어야 합니다. 위성 어셈블리의 매니페스트는 다른 어셈블리에 대한 종속성을 설명해서는 안 됩니다. 다른 어셈블리에 대한 위성 어셈블리의 모든 종속성은 대신 핵심 어셈블리의 매니페스트에 설명되어야 합니다.
Windows의 MUI(다국어 사용자 인터페이스) 버전을 사용하면 필수 언어가 시스템에 추가된 경우 사용자가 기본 설정에 따라 사용자 인터페이스 언어를 지정할 수 있습니다. 핵심 어셈블리는 여러 MUI 어셈블리를 사용하여 여러 언어를 지원할 수 있습니다. 이 경우 각 MUI 어셈블리에는 자체 매니페스트가 있어야 하며 다른 어셈블리에 대한 종속성은 핵심 어셈블리의 매니페스트에서만 설명해야 합니다.
예를 들어 Proseware.Sample.Pop는 Proseware.Research.SampleAssembly 어셈블리에 종속되는 핵심 병렬 어셈블리일 수 있습니다. Proseware.Sample.Pop에서 MUI를 사용하여 여러 언어를 지원하는 경우 각 언어에 대해 별도의 MUI 어셈블리를 제공할 수 있습니다. 각 MUI 어셈블리에는 이 특정 위성 리소스 DLL을 설명하는 자체 매니페스트가 있어야 합니다. MUI 어셈블리 매니페스트에는 다른 어셈블리에 대한 종속성에 대한 참조가 포함되어서는 안 됩니다. 핵심 어셈블리 Proseware.Sample.Pop를 설명하는 매니페스트는 Proseware.Research.SampleAssembly 어셈블리에서 Proseware.Sample.Pop의 종속성을 설명해야 합니다.
위성 어셈블리의 assemblyIdentity 요소의 특성은 기본 어셈블리의 매니페스트에 있는 특성과 비슷합니다. 이름 특성은 "리소스"가 추가된 기본 어셈블리와 동일해야 합니다. 예를 들어 이름이 기본 어셈블리의 "Proseware.Tools.SpellCheck.Runtime-Libraries"인 경우 리소스 어셈블리의 이름은 "Proseware.Tools.SpellCheck.Runtime-Libraries.Resources"입니다. 언어 특성은 리소스 어셈블리의 언어를 식별해야 합니다. 파일 특성에는 리소스 DLL인 파일 목록이 포함되어야 합니다.
다음은 Proseware.Tools.SpellCheck.Runtime-Libraries 리소스 어셈블리에 대한 매니페스트의 예입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Proseware.Tools.SpellCheck.Runtime-Libraries.Resources"
version="6.0.0.0"
processorArchitecture="X86"
language="DE"
publicKeyToken="0000000000000000"
/>
<file name="sample.dll"/>
</assembly>
기본 어셈블리는 리소스 어셈블리에 대한 선택적 종속성을 설명합니다. 이 예제에서 사용자가 독일어로 지정된 로캘을 사용하여 Windows를 실행하는 경우 Proseware.Tools.SpellCheck 어셈블리를 사용하는 애플리케이션은 독일어로 텍스트를 표시합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="Proseware.Tools.SpellCheck.Runtime-Libraries"
version="6.0.0.0" processorArchitecture="x86"
publicKeyToken="0000000000000000"/>
<dependency optional="yes">
<dependentAssembly>
<assemblyIdentity type="win32"
name="Proseware.Tools.SpellCheck.Runtime-Libraries.Resources"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="0000000000000000"
language="*"
/>
</dependentAssembly>
</dependency>