MicrosoftGame.config 本地化

本主题介绍如何本地化打包游戏的显示字符串,以便在 shell 中显示相应的本地化版本的字符串。 这些步骤与 Microsoft Docs 中在旧版应用或游戏中使用 Windows 10 资源管理系统一文相关。如果本主题中未涉及到更多详细信息或场景,则可能需要参考该文章。

注意

之前提到的文章中描述了一个 bug,其中字符串资产在清单文件中被引用,如下所示:

    ms-resource:Resources/ApplicationDisplayName  

注意

实际引用方式如下所示(请注意,省略了 Resources/):

    ms-resource:ApplicationDisplayName  

在游戏中包含本地化的 Shell 视觉对象

开始打包时,你将有一个包含如下部分的 MicrosoftGame.config 文件,这些部分指定属性中要显示的文本内容:OverrideDisplayName="My Game's Display Name"


  <ExecutableList>
    <Executable Name="MyGame.exe"
                OverrideDisplayName="My Game's Display Name"
                Id="Game"/>
  </ExecutableList>

  <ShellVisuals DefaultDisplayName="PackageName"
                PublisherDisplayName="Publisher Display name"
                StoreLogo="Storelogo.png"
                Square150x150Logo="Logo.png"
                Square44x44Logo="SmallLogo.png"
                Description="My App Description"
                BackgroundColor="#000040"
                SplashScreenImage="SplashScreen.png"/>  

如果你希望允许这些字符串的不同本地化版本,可通过在应用程序中与要支持的语言关联的各个子文件夹中创建 .resw 文件来实现。

  1. 创建一个名为 resources.resw 的 XML 文件,并将其置于项目的 Strings 子文件夹中。 这将作为项目的中性语言回退。
  2. 对于每种语言,都为项目创建一个新的 Strings 子文件夹。 例如,Strings\en-us 用于英语,Strings\es-mx 用于西班牙语(墨西哥)。 请确保为每种语言使用适当的 BCP-47 代码。
  3. 在每个 XML 文件中,添加以下内容,其中突出显示的文本将替换为您的应用程序的相应文本(使用您的默认语言)。 下面的示例演示如何将 (English) 用作简单的后缀。
    <?xml version="1.0" encoding="utf-8"?>
    <root>
        <data name="ApplicationDescription">
            <value>Contoso Demo app with localized resources (English)</value>
        </data>
        <data name="ApplicationDisplayName">
            <value>Contoso Demo Sample (English)</value>
        </data>
    </root>

接下来,应通过在 OverrideDisplayNameDescription 属性中使用如下所示的 ms-resource:ResourceStringName 语法,更新 MicrosoftGame.config 文件来引用这些资源字符串。

<ExecutableList>
    <Executable Name="MyGame.exe"
              OverrideDisplayName="ms-resource:ApplicationDisplayName"
              Id="Game"/>
</ExecutableList>

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

然后,确保 MicrosoftGame.config 文件包含你的应用程序支持的本地化目标列表。 例如,如果你的应用支持美国英语和西班牙语(墨西哥),则 .config 文件将采用以下内容作为 Game 的子元素。

<Resources>
    <Resource Language="en-US" />
    <Resource Language="es-MX" />
</Resources>

接下来,使用 makepkg localize 命令生成一个 Resource.pri 文件,该文件将包含这些本地化的资产字符串。 将生成的 Resources.pri 文件放入游戏的根内容目录中。

  1. 在游戏的根内容目录中打开 Microsoft 游戏开发工具包 (GDK) 游戏命令提示符。
  2. 运行以下命令:
    makepkg localize /d . /resw Strings

如果你的目录结构与该示例不一致或需要进行其他验证,可使用其他参数运行 makepkg localize

  • 使用 /resw 指定用于查找 .resw 文件的根的相对路径。
  • 使用带目录的 /pd 将生成的 Resources.pri 文件存储在默认根目录以外的其他位置。 目标目录必须已经存在。
  • 使用具有目录名称的 /t 指定将资源导出到 XML 文件的位置,可手动验证该位置来确保它包含相应的资源。

例如:

    makepkg localize /d . /resw Resources /pd ..\FinalLooseFolder /t ..\TempOutput

现在游戏的根内容目录中有一个 resources.pri 文件,你可像往常一样创建包。

最后,验证在系统设置为英语或西班牙语(墨西哥)的情况下安装时,“开始”菜单和显示应用字符串的其他系统页面上是否显示本地化字符串。 请注意,Microsoft Store 应用中的图标来自上传到合作伙伴中心的数据,不是你的应用包中的信息。

另请参阅

MicrosoftGame.config
MicrosoftGame.config 概述
MicrosoftGame.config 编辑器
MicrosoftGame.config 参考(示例 MicrosoftGame.config 和架构)
包装概述