지능형 전송: 언어 지정자
언어 지정자는 청크의 콘텐츠가 어떤 언어에 적합한지 선언합니다. 설치 패키지의 청크에 하나 이상의 언어 지정자를 표시하면 설치 시 콘솔이 다음을 수행합니다.
사용자가 필요로 하는 언어와 패키지 언어 사이에 가장 적합한 청크를 결정합니다.
해당 언어가 표시된 청크와 언어 지정자가 없는 청크만 다운로드합니다.
정확한 일치가 발견되지 않으면 언어 지정자를 사용하여 대체 언어를 선언할 수 있습니다.
언어 인식 설치
지능형 전송 언어 지정자는 패키지의 모든 현지화된 자산 중 일부만 본체에 설치하도록 콘텐츠에 태그를 지정합니다. 이렇게 하면 디지털로 설치하는 고객의 대역폭이 절약되고 모든 고객의 하드 드라이브 공간이 절약됩니다.
콘텐츠가 하나 이상의 언어에 해당한다는 것을 나타내려면 layout.xml 파일의 청크에 Languages
특성을 추가합니다. 다음 예제에서는 본체가 실행되는 언어에 가장 적합한 것으로 프랑스어를 선택한 본체에만 청크를 설치함을 보여줍니다. 이 청크는 캐나다 로캘(fr-CA) 또는 프랑스 로캘(fr-FR)을 사용하여 프랑스어로 설정한 본체에 설치됩니다. 언어 지정자가 없는 모든 청크는 장치 유형과 같은 다른 지정자를 통해 제외되지 않는 한 모든 본체에 설치될 것입니다.
<Chunk Id="1001" Languages="fr">
<FileGroup DestinationPath="\Data\Maps\X1\fr" SourcePath="Y:\Maps\Level1\X1\fr" Include="*.map"/>
<Chunk>
사용자가 선택한 언어 확인
XPackageGetUserLocale 함수를 사용하여 운영 체제가 사용자 시스템에서 타이틀 설치와 가장 일치하는 것으로 판단한 로캘의 이름을 쿼리합니다.
반환되는 로캘은 사용자에 대해 사용 가능한 모든 데이터를 기반으로 대략 다음과 같은 작업을 거쳐 최선의 일치를 결정하는 알고리즘의 결과입니다.
- 사용자의 현재 언어 설정과 가장 일치하는 언어 목록이 생성됩니다.
- MicrosoftGame.config/manifest에서 선언된 모든 언어의 목록이 생성됩니다.
- 현재 설치되어 있고 패키지에서 사용 가능한 모든 언어의 목록이 생성됩니다.
- 매니페스트에 선언된 첫 번째 언어는 언어 선택에 대한 최종 대체입니다.
- 결과는 언제나 MicrosoftGame.config/manifest에서 선언된 언어거나, 선언된 언어가 없다면 사용자 언어가 됩니다.
참고 항목
사용되는 알고리즘은 시간이 지남에 따라 변경될 수 있으며 반드시 위의 설명과 일치하지는 않습니다.
XPackageGetUserLocale이 반환하는 언어가 반드시 GetUserDefaultLocaleName 또는 다른 NLS(국가별 언어 지원) 및 지역화 관련 Win32 API 함수가 반환하는 언어와 일치하는 것은 아니므로 이 함수가 반환하는 언어를 우선하여 호출되어야 합니다.
MicrosoftGame.config의 지역화 및 언어 설정에 대한 자세한 내용은 국가 언어 지원 API와 지역화 GDK 샘플을 참조하세요.
참고 항목
layout.xml 파일에서 참조하는 모든 언어는 MicrosoftGame.config 파일에도 있어야 합니다. 이 조건이 충족되지 않는다면 MakePkg 도구에서 오류가 발생합니다.
사용자가 다른 언어로 전환한 후 타이틀을 시작할 때의 동작
사용자가 타이틀을 시작하고 패키지의 일부로 사용자에게 최상의 로캘을 사용할 수 있지만 아직 설치되지 않은 경우(예: 사용자가 타이틀이 실행되지 않는 동안 언어를 전환한 경우) 다음에 타이틀을 시작할 때 가장 일치하는 언어를 설치할 기회가 제공됩니다.
참고 항목
사용자가 언어 설치를 선택할 경우 새 언어가 다운로드될 때까지 이전에 선택한 설치된 언어로 게임을 계속 실행할 수 있습니다. 우리는 다른 언어로 시작한 사용자가 해당 언어를 이해하며 선호 언어가 다운로드될 때까지 기다리는 동안 게임을 실행하기를 원할 수 있다고 가정합니다.
이 동작 때문에 많은 개발자가 혼동을 겪으므로 유의하세요. 테스트할 때는 타이틀을 시작하기 전에 게임 설치 큐를 모니터링하여 새 언어 설치가 끝났는지 확인해야 합니다. 사용자가 언어를 설치하겠다고 선택하면 XPackageGetUserLocale은 다운로드가 끝난 후에 해당 언어를 보고합니다.
타이틀 내에서 추가 언어 제공
일부 타이틀은 본체에 설정된 언어에 관계없이 (사용자가 첫 번째 게임 플레이를 할 때나 메뉴를 통해) 타이틀에 사용할 언어를 선택할 수 있는 기능을 제공합니다. 설치 시 본체의 언어 설정과 layout.xml 파일에 지정된 언어에 따라 지능형 전송은 특정 패키지에 대해 하나의 언어만 설치합니다. 기본적으로 타이틀은 이 언어로 렌더링해야 합니다.
또한 Xbox 셸에서 보조 언어를 설치할 수 있습니다. 자체 UI를 사용하여 타이틀 내에서 이 옵션을 제공할 수도 있습니다. XPackageEnumeratePackages 메서드를 호출하여 설치에 사용할 수 있는 언어를 결정할 수 있습니다. 선택한 언어 및 설치 출처에 따라 설치가 디스크에서 시작되거나 Xbox Live에서 가져올 수 있습니다. 사용자가 기본값 이외의 언어를 선택할 때 타이틀은 XPackageFindChunkAvailability 메서드를 호출하여 해당 언어로 태그된 청크의 설치 여부를 결정해야 합니다. 이 API는 다음 표에 나열된 값 중 하나를 가지는 XPackageChunkAvailability 개체를 반환합니다.
상태 | 설명 |
---|---|
준비 | 청크가 이미 설치되었고, 청크를 읽을 수 있습니다. |
보류 | 청크가 아직 설치되지 않았지만, 설치될 예정입니다. |
설치할 수 있음 | 청크가 설치되지 않지만, 청크를 다운로드할 수 있습니다. 자산을 설치하려면 XPackageInstallChunks 메서드를 적절한 지정자와 함께 호출합니다. |
사용할 수 없음 | 청크를 다운로드할 수 없음 |
XPackageChunkAvailability가 사용할 수 없음을 반환하면 지정된 언어를 온라인에서 또는 디스크에 있는 버전의 타이틀에서 사용할 수 없습니다.
사용자가 사용할 수 있지만 현재 설치되지 않은 언어를 설치하기로 선택하면 타이틀은 설치할 언어를 지정하는 XPackageChunkSelector 개체로 XPackageInstallChunks 메서드를 호출해야 합니다. 이 메서드를 호출하면 시스템이 렌더링한 UI가 표시되어 사용자에게 추가 다운로드와 설치에 대한 수락을 받습니다. 타이틀은 XPackageGetInstallationProgress 메서드 또는 XPackageRegisterInstallationProgressChanged 메서드와 함께 반환된 설치 모니터 핸들을 사용하여 새 데이터의 다운로드와 설치를 모니터링하거나 사용자가 추가 설치를 거부했는지 파악할 수 있습니다.
XPackageUninstallChunks 메서드를 호출하여 타이틀을 제거할 수 있습니다. 언어를 하나만 설치했다면 이 호출은 자동으로 무시됩니다.
Xbox One 소프트웨어 개발 키트의 변경 내용
Xbox One 소프트웨어 개발 키트에서 지능형 전송을 사용한 경험이 있다면, 언어를 선언하고 매핑하는 방식이 다르다는 점에 유의해야 합니다.
Languages
특성을 청크에 추가한 경우 해당 언어를 MicrosoftGame.config에서도 선언해야 합니다. 이제 언어를 대상으로 설치할 청크는 가장 일치하는 언어의 단일 값을 기준으로 파악합니다. 예를 들어 레이아웃 파일에 'en' 표시가 있는 청크와 'en-US' 표시가 있는 청크가 있을 때, 사용자 언어를 'en-US'로 설정하면 'en' 청크는 설치되지 않습니다. 이러한 레거시 동작을 원한다면, 설치해야 하는 언어(en;en-US)를 모두 포함하는 청크를 선언하세요.