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 文件来实现。
- 创建一个名为 resources.resw 的 XML 文件,并将其置于项目的 Strings 子文件夹中。 这将作为项目的中性语言回退。
- 对于每种语言,都为项目创建一个新的 Strings 子文件夹。 例如,Strings\en-us 用于英语,Strings\es-mx 用于西班牙语(墨西哥)。 请确保为每种语言使用适当的 BCP-47 代码。
- 在每个 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>
接下来,应通过在 OverrideDisplayName
和 Description
属性中使用如下所示的 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 文件放入游戏的根内容目录中。
- 在游戏的根内容目录中打开 Microsoft 游戏开发工具包 (GDK) 游戏命令提示符。
- 运行以下命令:
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 和架构)
包装概述