设置默认语言
PlayFab 引入了代表游戏开发者存储本地化字符串的支持。 此外,我们会添加必要逻辑,以便为玩家提供其首选语言的正确字符串。
为此,我们将利用两个新的语言设置:一个与你的游戏相关联,另一个存储在每个玩家的实体配置文件中:
- 游戏默认语言:指示游戏的主要支持语言。 设置后,我们会要求游戏支持此语言,以便至少用于使用本地化字符串的功能。
- 玩家语言:指示玩家的首选语言。 这可以基于每个游戏进行设置。
通过使用这两个设置,PlayFab 逻辑将本地化字符串与偏好该语言的玩家进行匹配。 没有语言首选项的玩家会收到采用游戏指定默认语言的字符串。
注意
其首选语言不受游戏支持的玩家也会收到基于游戏默认语言的字符串。
本教程介绍如何设置游戏的默认语言和玩家的首选语言。
要求
本教程假设您具有有关使用 PlayFab 的以下应用知识:
有关如何创建玩家的基本知识。 这是必需的,因为在调用首选语言逻辑之前,具有用户名和密码的玩家必须已存在。
你已阅读 Game Manager 快速入门。 如果你不熟悉 Game Manager,则这是查看语言信息的位置。
了解如何使用玩家档案,因为需要确认首选语言已添加到玩家档案中。
请花点时间在获取玩家档案教程中查看所提供的有关如何获取玩家档案的信息。
第 1 部分 - 玩家的首选语言
设置玩家首选语言之前,确定如何收集首选语言。 您有两个选项:
- 询问玩家:在游戏菜单上添加一个选项。
- 感知其语言:通过调用提供的平台 API(例如,对于 Android 为
Locale.getDefault.getLanguage()
)来使用玩家设备的语言。
注意
有许多语言可用,游戏可能不 支持所有语言。 尽管不是必要的,我们还是建议使游戏适应未来需要,存储玩家的实际首选项。 如果以后再添加对该语言的支持,则 PlayFab 的逻辑自动开始提供新字符串(而不是默认语言)。
步骤 1 - 设置语言
PlayFab 允许你从要支持的特定语言列表中进行选择。 可以调用 GetLanguageList()
方法以查看语言代码。
注意
使用 SetProfileLanguage
API 时,必须以 ISO 639-1 格式(例如,“en”、“es”或“ja”)指定语言字符串。 目前不支持代码"zh"。
首先,我们会更新玩家档案以包含他们希望用于从游戏获取内容的语言。
C# 代码示例
void SetProfileLanguage(string language, int? profileExpectedVersion, EntityKey entity)
{
var request = new SetProfileLanguageRequest
{
Language = language,
ExpectedVersion = profileExpectedVersion,
Entity = entity
};
PlayFabProfilesAPI.SetProfileLanguage(request, res =>
{
Debug.Log("The language on the entity's profile has been updated.");
}, FailureCallback);
}
void FailureCallback(PlayFabError error)
{
Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
Debug.LogError(error.GenerateErrorReport());
}
步骤 2 - 查看语言是否已更新
转到玩家概览。 在 Game Manager 中,转到“玩家>概述”。 检查其联系人信息部分是否已使用其首选语言更新。
语言也可以使用下图中显示的 Language 下拉菜单进行更新。
接下来,导航到玩家的 PlayStream,它会显示 Entity language updated 事件。
选择事件上的信息图标,并查看类似于以下示例的 JSON。
{
"EventName": "entity_language_updated",
"Source": "PlayFab",
"Language": "en",
"EntityChain": "title_player_account!4CDA57A14A596E70/<YourTitleId>/C9458B4D3A115F4B/36163DA3783B0C8A/",
"EntityLineage": {
"NamespaceId": "4CDA57A14A596E70",
"TitleId": "YourTitleId",
"MasterPlayerAccountId": "C9458B4D3A115F4B",
"TitlePlayerAccountId": "36163DA3783B0C8A",
"CharacterId": null,
"GroupId": null
},
"EventNamespace": "com.playfab",
"EventId": "f643e22a2a76462aaeaa3469afa31434",
"EntityType": "title_player_account",
"EntityId": "36163DA3783B0C8A",
"SourceType": "BackEnd",
"Timestamp": "2018-08-24T18:49:47.8755292Z",
"History": null,
"CustomTags": null,
"Reserved": null
}
第 2 部分 - 设置游戏默认语言
接下来,为游戏设置默认语言。 所有本地化功能现在都将某种语言与内容的每个翻译版本相关联。
游戏需要默认语言。 这可确保如果未设置或不支持任何玩家的首选语言,玩家仍然可以收到内容的默认版本。
若要开始,请在左侧菜单中选择 Settings,如下所示。
在“常规”选项卡中的“默认游戏”标题下,可看到“默认语言”下拉列表。 必须先设置默认语言,然后才能使用任何添加本地化功能。
完成后,选择“保存”按钮。 如果更新成功,则会显示一条消息通知。
如果返回到仪表板,则会在 PlayStream 事件列表中看到 游戏 API 设置更改 事件,如下所示。
选择事件上的信息图标,并查看类似于以下示例的 JSON。
{
"EventName": "title_api_settings_changed",
"PreviousSettingsValues": {
"DefaultLanguage": null
},
"SettingsValues": {
"DefaultLanguage": "en"
},
"UserId": "EAF83D52E282C291",
"DeveloperId": null,
"EventNamespace": "com.playfab",
"EntityType": "title",
"Source": "PlayFab",
"EventId": "108849a5e1424051b42256bc75b2e34b",
"EntityId": "YourTitleId",
"SourceType": "BackEnd",
"Timestamp": "2018-08-24T21:51:02.2215614Z",
"History": null,
"CustomTags": null,
"Reserved": null
}
第 3 部分 - 更新游戏默认语言
请务必注意,为游戏设置默认语言会告诉 PlayFab 在向具有以下特点的玩家发出通信时使用该语言:未设置首选语言,或选择的语言与支持的语言不匹配。
因为游戏的默认语言用作回退语言,所以 PlayFab 预期所有通信都支持默认语言。
注意
可以随时更改游戏默认语言,但 PlayFab 会要求当前通信模板支持所更改为的目标语言。
如果更新游戏的默认语言,则会看到界面现在显示 Edit 链接。
访问此链接会看到与之前相同的下拉列表。 但是,如果尝试保存电子邮件模板不完全支持的默认语言,则会看到类似于以下所示的一个或多个错误消息。
如果发生错误,则可以按照提供的链接更新内容,以支持缺少的语言。 所有错误都得到解决后,将接受默认语言更改。
总结
在本教程中,您已了解如何设置和更新游戏的默认语言以及玩家的首选语言。
如果对本教程有任何问题或反馈,请通过我们的论坛或 Slack 通道联系我们。