다음을 통해 공유


패키징된 리소스 지역화

MicrosoftGame.config 파일에서 사용되는 리소스(문자열과 이미지)는 사용자 로캘에 따라 지역화할 수 있습니다. 문자열 및 이미지에 관한 참조를 포함하는 데이터 파일인 resource.pri 파일은 Visual Studio 2019 이상을 사용하여 타이틀을 빌드할 때마다 자동으로 생성됩니다. 이 파일은 자동으로 생성되며 운영 체제가 찾는 특별히 명명된 파일입니다. 리소스가 없을 경우 기본 resources.pri 파일은 MicrosoftGame.config 파일에 정의된 타이틀 이름만 포함합니다. 다음과 같이 Microsoft GDK(게임 개발 키트) 명령 프롬프트를 사용하여 이 파일의 내용을 확인할 수 있습니다.

MakePri.exe dump /if resources.pri /of out.xml

이 명령은 resources.pri 파일에 포함된 모든 리소스를 XML 형식으로 덤프합니다. 지역화할 모든 리소스(문자열과 이미지)가 이 파일에 포함되었는지 확인할 수 있습니다. 언어별 문자열/이미지를 포함하도록 resources.pri 파일을 업데이트할 수 있습니다. 이름, 시작 화면 및 로고는 사용자 로캘을 기반으로 하는 여러 언어로 되어 있습니다. 이어지는 섹션에서는 Visual Studio 2019 이상을 사용하여 문자열 및 이미지를 지역화하는 방법에 관한 자세한 정보를 제공합니다.

지역화 앱 이름 및 설명

.config 파일에 포함된 모든 리소스(문자열 및 이미지)는 지역화할 수 있습니다. 지역화된 문자열을 포함하기 위한 패턴은 이미지를 포함하기 위한 패턴과 약간 다릅니다. 지역화 가능한 문자열은 다음 섹션에 자세히 설명되어 있습니다.

지역화 가능한 문자열 추가

.config 파일의 문자열은 사용자 로캘 및 타이틀에서 지원하는 로캘을 기반으로 지역화할 수 있습니다. 게임에서 해당 사용자 로캘이 지원되지 않는 경우 대체 대상으로 작동하는 기본 문자열을 제공하는 것이 중요합니다. 이 섹션에서는 게임에 기본 문자열과 지역화된 문자열을 추가하는 방법을 자세히 설명합니다. 이렇게 추가한 문자열은 MicrosoftGame.config 파일에서 사용할 수 있습니다.

Visual Studio 솔루션 탐색기에서 기본 문자열 추가

  1. 프로젝트 폴더를 마우스 오른쪽 단추로 클릭합니다. 다음은 더 나은 구성을 위한 선택적 단계입니다.
  2. 추가를 선택하고 새 필터를 선택합니다.
  3. 새 필터의 이름을 Strings라고 지정합니다.
  4. Strings 폴더를 마우스 오른쪽 단추로 클릭합니다.
  5. 추가, 새 항목, Visual C++ \Resource를 차례로 선택합니다.
  6. 어셈블리 리소스 파일(.resx)을 선택합니다.
  7. 이렇게 하면 패키지 디렉터리의 루트에 resources.resx 파일이 생성됩니다. 이 파일은 언어 독립적인 리소스 문자열을 추가할 파일입니다. 편집 UI에 비어 있는 기본 String1 항목이 표시됩니다.

참고 항목

Microsoft GDK(게임 개발 키트) 타이틀에 필요한 파일 확장명은 .resw 파일입니다. Visual Studio에서는 이 확장명 추가를 지원하지 않으므로 resources.pri 파일 생성 시 문제를 방지하기 위해 resources.resx 파일의 이름을 resources.resw로 바꾸는 것이 좋습니다.

문자열 참조를 포함하도록 패키지 업데이트

새로 추가된 문자열 설명의 참조는 MicrosoftGame.config 파일에서 “ms-resource:” 구문을 사용하여 수행됩니다. 사용된 이름은 리소스 파일에 추가된 이름과 동일합니다.

  <ShellVisuals DefaultDisplayName="ms-resource:AppName"
                PublisherDisplayName="Publisher Display name"
                StoreLogo="StoreLogo.png"
                Square150x150Logo="Logo.png"
                Square44x44Logo="SmallLogo.png"
                Description="ms-resource:AppDescription"
                BackgroundColor="#000040"
                SplashScreenImage="SplashScreen.png"/>  

Visual Studio 솔루션 탐색기에서 특정 언어에 관한 문자열 추가

  1. 사용자가 지원하는 언어마다 프로젝트의 기본 폴더에 최상위 하위 폴더를 생성합니다.
  2. Strings 폴더를 마우스 오른쪽 단추로 클릭합니다.
  3. 추가를 선택하고 새 필터를 선택합니다.
  4. 새 폴더의 이름을 en-us로 지정한 다음에 해당 폴더를 마우스 오른쪽 단추로 클릭합니다.
  5. 추가, 새 항목, Visual C++ /Resource를 차례로 선택합니다.
  6. 어셈블리 리소스 파일(.resx)을 선택합니다.
  7. en-us 하위 폴더가 포함된 출력 위치를 선택합니다. 예: C:\MyProject\en-us\resources.resx.
  8. 이렇게 하면 패키지의 en-us 폴더에 resources.resx 파일이 생성됩니다. 이 파일은 영어 리소스 문자열을 추가할 파일입니다. 편집 UI에 비어 있는 기본 String1 항목이 표시됩니다.
  9. 파일 속성항목 종류PRI 리소스인지 확인합니다.
  10. 타이틀에서 지원하는 추가 언어별로 이 단계를 반복합니다.

참고 항목

Microsoft GDK(게임 개발 키트) 타이틀에 필요한 파일 확장명은 .resw 파일입니다. Visual Studio에서는 이 확장명 추가를 지원하지 않으므로 resources.pri 파일 생성 시 문제를 방지하기 위해 resources.resx 파일의 이름을 resources.resw로 바꾸는 것이 좋습니다.

MicrosoftGame.config 파일에서 언어 업데이트

다음과 같이 MicrosoftGame.config 파일의 Resources 섹션 아래에 지원되는 각 언어를 추가합니다.

<Resources>
    <Resource Language="en-US"/>
    <Resource Language="fr-FR"/>
    <Resource Language="de-DE"/>
</Resources>

중국어(번체)를 포함하도록 MicrosoftGame.config 파일에서 언어 업데이트

게임에서 중국어(번체)를 지원하거나 지원할 계획이라면 목록에 이미 zh-TW 또는 zh-HK가 포함되어 있을 것입니다. 올바른 언어 대체 설정을 위해 다음과 같이 목록에 zh-SG 및 zh-CN도 추가합니다.

<Resources>
    <Resource Language="en"/>
    <Resource Language="en-US"/>
    <Resource Language="en-GB"/>
    <Resource Language="fr"/>
    <Resource Language="fr-FR"/>
    <Resource Language="de-DE"/>
    <Resource Language="ja-JP"/>
    <Resource Language="zh-TW"/>
    <Resource Language="zh-SG"/>
    <Resource Language="zh-CN"/>
  </Resources>

Visual Studio 솔루션 탐색기에서 지역화 가능 이미지 추가

MicrosoftGame.config에는 Logo, SmallLogoSplashScreen에 대한 이미지가 있습니다. 이미지는 각 언어별로 지역화할 수 있습니다.

패키지 매니페스트에서 지역화 가능한 모든 이미지에 대해 다음 단계를 수행합니다.

  1. 사용자가 지원하는 언어마다 프로젝트의 기본 폴더에 최상위 하위 폴더를 생성합니다.
  2. Resource Files 폴더를 마우스 오른쪽 단추로 클릭합니다.
  3. 추가를 선택하고 새 필터를 선택합니다.
  4. 새 폴더의 이름을 en-us로 지정한 다음에 해당 폴더를 마우스 오른쪽 단추로 클릭합니다.
  5. 추가를 선택하고 Exiting Item(항목 종료)을 선택합니다.
  6. 프로젝트 폴더의 en-us 하위 폴더로 이동합니다. 지역화할 이미지를 모두 선택합니다.
  7. 이미지를 마우스 오른쪽 단추로 클릭하고 속성으로 이동합니다.
  8. 항목 종류이미지로 설정되어 있고 콘텐츠로 설정되어 있는지 확인합니다.
  9. 타이틀에서 지원하는 추가 언어별로 이 단계를 반복합니다.

패키지의 루트 폴더에 Logo, SmallLogo, SplashScreenStoreLogo에 대해 각각 선택된 언어가 지원되지 않을 경우 사용될 기본 이미지를 만듭니다.

MicrosoftGame.config 파일에서 언어 업데이트

이전 예제에 나와 있는 것처럼 .config 파일의 Resources 섹션을 업데이트합니다.

MicrosoftGame.config 파일에서 이미지 경로 업데이트

.config 파일의 이미지 경로를 생성된 이미지의 이름으로 업데이트합니다. 기본 이미지는 패키지의 루트 폴더에 있어야 합니다. 모든 언어에 대해 먼저 해당 언어 폴더에서 이미지 파일이 있는지 확인되며, 파일이 있으면 이 파일이 사용됩니다. 언어 폴더에 이미지가 없거나 언어가 지원되지 않으면(즉, 언어 폴더가 없으면) 다음과 같이 루트 폴더에 있는 이미지 파일이 사용됩니다.

  <ShellVisuals DefaultDisplayName="ms-resource:AppName"
                PublisherDisplayName="Publisher Display name"
                StoreLogo="StoreLogo.png"
                Square150x150Logo="Logo.png"
                Square44x44Logo="SmallLogo.png"
                Description="ms-resource:AppDescription"
                BackgroundColor="#000040"
                SplashScreenImage="SplashScreen.png"/>  

참고 항목

루트에 모든 언어 폴더를 만드는 대신 폴더 하나를 만들고(예: 이미지), 이 폴더 안에 언어 폴더를 만들 수도 있습니다. 이렇게 하면 Images 폴더에 기본 이미지가 있게 됩니다(예: C:\MyProject\Images). 이는 이미지를 보다 체계적으로 구성하는 데 도움이 됩니다. 타이틀에서는 원하는 방식으로 리소스를 구성할 수 있습니다. 이 경우에는 경로가 다음과 같아집니다.

  <ShellVisuals DefaultDisplayName="ms-resource:AppName"
                PublisherDisplayName="Publisher Display name"
                StoreLogo="Images\StoreLogo.png"
                Square150x150Logo="Images\Logo.png"
                Square44x44Logo="Images\SmallLogo.png"
                Description="ms-resource:AppDescription"
                BackgroundColor="#000040"
                SplashScreenImage="Images\SplashScreen.png"/>  

타이틀 지역화 팁

모든 문자열과 이미지를 각 폴더에 넣어두면 문자열과 이미지가 자동으로 resources.pri 파일에 사용됩니다. 모든 언어에 대해 먼저 해당 언어 폴더에서 리소스가 있는지 확인되며, 리소스가 있으면 이 리소스가 사용됩니다. 언어 폴더에 이미지가 없거나 언어가 지원되지 않으면(즉, 언어 폴더가 없으면) 다음과 같이 기본 리소스가 사용됩니다.

타이틀 내 리소스 지역화와 패키지 리소스 지역화 간에는 차이가 있습니다. MicrosoftGame.config 파일에서는 문자열과 이미지를 확인하는 데 기본 리소스가 사용됩니다. 그러나 타이틀 내의 경우에는 GetUserDefaultLocaleName() API가 반환하는 언어를 사용하는 것이 좋습니다. 앞에서 설명한 대로 다음과 같이 Microsoft GDK(게임 개발 키트) 명령 프롬프트를 사용하여 resources.pri 파일의 내용을 확인할 수 있습니다.

MakePri.exe dump /if resources.pri /of out.xml 

참고 항목

속성에서 다음 값과 함께 하나 이상의 이미지 리소스를 포함합니다(Item Type을(를) Image(으)로, Content을(를) Yes(으)로). 이 작업은 지역화된 문자열이 런타임에 확인되도록 하기 위해 필요합니다. 포함하지 않을 경우 이름이 리소스 파일의 확인된 이름이 아닌 “ms-resource:AppName”으로 표시됩니다.

청크 레이아웃

지역화 프로세스의 일환으로 생성되는 resources.pri 파일을 포함하도록 청크 레이아웃 파일을 업데이트해야 합니다. 리소스 파일의 모든 문자열은 resources.pri 파일에 패키징되므로 리소스 파일을 포함할 필요는 없습니다. 단, 매니페스트 파일에서 사용되는 모든 이미지 파일은 포함해야 합니다. resources.pri 파일은 이미지 파일의 경로를 나타내며 이미지 자체를 포함하지 않습니다. 다음과 같이 청크 레이아웃 파일의 시작 청크에 이미지 파일과 resources.pri 파일을 포함합니다.

  <Chunk Id="1000" Marker="Launch">
    … (All required files)
    <FileGroup DestinationPath="\Images" SourcePath="Images" Include="*.*"/>
    <FileGroup DestinationPath="\Images\en-US" SourcePath="Images\en-US" Include="*.*"/>
    <FileGroup DestinationPath="\Images\fr-FR" SourcePath="Images\fr-FR" Include="*.*"/>
    … (Other language files)
    <FileGroup DestinationPath="\" SourcePath="." Include="resources.pri"/>
  </Chunk>
  … (Other Chunks)

지능형 전송

언어 및 로캘이 포함된 레이아웃 파일에서 청크를 태그하여 지정된 태그 값만 연결되도록 지역화된 콘텐츠의 포함을 지정할 수 있습니다. 지역화된 콘텐츠를 분리하면 해당 콘솔에 설정한 언어에 필요한 콘텐츠만 설치하여 사용자의 설치 시간을 단축할 수 있습니다. 이러한 분리는 MakePkg.exe를 사용하여 만들어진 설치 패키지를 테스트할 때 테스트와 관련 없는 태그된 청크를 제외하는 옵션을 제공함으로써 반복 시간을 단축할 수도 있습니다. 예를 들어 프랑스어 오디오 파일을 테스트하려는 경우 프랑스어 콘텐츠 파일만 푸시하여 xbappinstall 명령에 필요한 시간을 줄일 수 있습니다. 예제에서 다음과 같은 레이아웃 파일을 살펴보겠습니다.

  <Chunk Id="1005" Languages="en-US">
    <FileGroup DestinationPath="\assets\audio" SourcePath="." Include="en_us_commentary.mp3"/>
  </Chunk>
  <Chunk Id="1006" Languages="fr-FR">
    <FileGroup DestinationPath="\assets\audio" SourcePath="." Include="fr_fr_commentary.mp3"/>
  </Chunk>
  <Chunk Id="1007" Languages="es-MX">
    <FileGroup DestinationPath="\assets\audio" SourcePath="." Include="es_mx_commentary.mp3"/>
  </Chunk>

  <Chunk Id="1008" Languages="es-MX, en-US">
    <FileGroup DestinationPath="\assets" SourcePath="." Include="mixed_content.dat"/>
  </Chunk>

지능형 설치를 활용하는 데 필요한 유일한 단계는 레이아웃 파일에서 Languages 태그를 사용하는 것입니다.

참고 항목

지능형 전송은 OnDemand 또는 Devices와(과) 같은 몇 가지 다른 태그를 사용할 수도 있습니다. 이 항목에서는 지능형 전송 및 청크 레이아웃 태그에 관한 포괄적인 개요를 제공하지 않습니다. 자세한 내용은 지능형 전송 개요 또는 지능형 전송: 언어 지정자를 참조하세요.

사용자 환경

지역화된 자산을 분할하는 것의 주요 이점은 사용자를 위한 설치 크기가 줄어든다는 것입니다. 사용자가 Languages 태그를 사용하는 게임을 다운로드하면 콘솔에서 사용자 설정을 기준으로 해당 언어/로캘과 관련이 없는 청크에서 콘텐츠를 다운로드하지 않습니다. 사용자의 언어 및/또는 로캘이 레이아웃 파일의 Languages 태그에 없는 경우 시스템은 게임 플레이에 필요한 자산을 사용할 수 있는지 확인하기 위해 가장 적절한 대체 항목을 확인합니다. 다음은 사용자 설정에 따라 앞에 나온 레이아웃 파일에서 어느 청크가 다운로드될지 보여 주는 몇 가지 예제입니다.

  • 사용자의 콘솔이 “en-US”로 설정된 경우 콘솔이 청크 1005 및 1008을 설치합니다.
  • 사용자의 콘솔이 “fr-FR”로 설정된 경우 콘솔이 청크 1006만 설치합니다.
  • 사용자의 콘솔이 “en-GB”로 설정된 경우 시스템은 영국 영어에 관한 명시적 지원이 없음을 인식합니다. 이 경우 콘솔은 지원되는 최상의 대체 언어(이 경우 "en-US")를 찾고 청크 1005 및 1008을 설치합니다.
  • Languages 태그를 포함하지 않는 모든 청크는 사용자의 언어 설정과 관계없이 다운로드됩니다.

지능형 전송 테스트

지능형 전송은 게임을 플레이하는 데 필요한 설치 패키지의 크기를 줄여 줍니다. 설치 프로세스의 테스트는 GDK 명령 프롬프트의 xbappinstall 명령을 사용하여 수행하는 것이 가장 간편합니다. GDN에서 사용할 수 있는 StreamingInstall 샘플은 레이아웃 파일에서 설치 패키지를 생성하고 테스트를 위해 개발 콘솔에 해당 패키지를 설치하는 데 필요한 기본 단계에 관한 개요를 보여 줍니다.

레이아웃 파일에 지능형 전송에 필요한 태그가 포함되어 있고 패키지 경로만 사용하여 xbappinstall을(를) 실행할 경우 소매 환경과 비슷한 동작이 수행됩니다. 콘솔 설정과 다른 언어로 태그가 지정된 청크는 설치되지 않습니다.

여러 언어 및 로캘을 테스트하려면 /Languages 플래그를 사용하여 콘솔 설정과 관계없이 여러 언어에 대해 모든 청크를 강제로 설치합니다. /AllChunks 플래그를 사용하면 콘솔에 전체 패키지가 설치됩니다.

초기 설치 이후에 콘솔 언어 설정의 변경을 테스트하려면 /w 플래그가 필요합니다. 그러면 설치가 완료된 후에 해당 패키지를 호스트하는 개발용 PC와 콘솔 사이의 연결이 계속 열려 있어 나중에 청크를 추가로 설치할 수 있습니다. 이는 원래대로라면 /AllChunks 플래그를 사용하는 경우에만 설치되는 OnDemand 콘텐츠를 테스트할 때 특히 유용합니다.

참고 항목

지역화 및 세계화(개요)
MicrosoftGame.config 지역화