使用官方 Phrase 插件对 Unity 游戏进行本地化

想要轻松本地化您的 Unity 游戏,无需 CSV 混乱? 了解官方 Phrase Strings Unity 插件如何简化您游戏的本地化工作流——从字符串表的设置到将翻译直接导入您的项目。无论您是为德语、塞尔维亚语还是其他语言开发,本指南都将帮助您快速入门,并像专业人士一样进行本地化。

游戏在全球范围内流行。根据不同统计数据的显示,全球有26亿33亿人玩电子游戏。截至2023年,仅中国的游戏市场规模就达到820.6亿美元非英语国家是全球游戏玩家最集中的地区之一。

这意味着,如果您想扩大游戏的覆盖面和收入潜力,本地化已成为必需。如果您是 Unity 开发者,我们建议让您的游戏以玩家的本地语言可用的最佳方式是使用 Phrase Strings Unity 本地化插件

在这里,我们将向您展示使用 Phrase Strings 和 Unity 的基本知识。

我们在这里要解决什么问题?

在我们深入具体内容之前,让我们看看这个插件解决了哪些本地化挑战。

顾名思义,Phrase Strings 是 Phrase Localization Platform 的一部分,它帮助您管理构成游戏 UI 的各种字符串的本地化版本。作为Unity 已验证解决方案,我们的新插件是按照 Unity 最高的质量和兼容性标准构建的。

如果您之前本地化过 Unity 项目,很可能最终会得到一堆电子表格、频繁的来回沟通,以及手动将 CSV 文件导入 Unity 字符串表的过程,结果在游戏测试中发现格式问题和文本溢出问题。

使用Phrase Strings Unity 插件,工作流变得更加自动化和可预测:

  • 您可以在 Phrase Platform 上创建、批准及以其他方式管理翻译。
  • 您的字符串表通过插件直接连接到 Phrase Strings。
  • 您可以在 Unity 中通过单击一次将原文/源语推送到 Phrase。
  • 然后在准备好时,将完成的翻译直接导入您的 Unity 项目。

那么,如何开始使用 Phrase 字符串 Unity 本地化插件呢?

开始使用 Phrase 字符串和 Unity

注释:在本介绍中,我们将使用 Unity 的《Endless Runner》示例游戏。如果您还没有这个示例游戏,请下载并在 Unity 编辑器中打开。

Phrase 的 Unity 插件依赖于 Unity 本地化包,特别是它的字符串表集合。所以,下一个步骤是安装 Unity 本地化

如果您已经熟悉 Unity,那么这非常简单,但对于新手来说,可能会有些不知所措,因为有几种不同的方法可以安装 Unity 包。幸运的是,本地化包在 Unity 的官方包注册表中可用。

  1. 打开“窗口”菜单栏,然后选择包管理器
  2. 点击左侧的图标,即可搜索 Unity 注册表。
  3. 搜索”localization”。
  4. 当您找到正确的包时,点击“Install”(提示:在撰写时,它应该是唯一的结果)。正如预期,软件包将会安装在您的计算机上。

现在包已安装,我们需要在项目中初始化本地化。 

编辑顶级菜单中,点击项目设置,然后导航到设置面板的本地化部分。

点击创建按钮,然后保存您的设置文件。

如果您按资产类型组织项目,您可能想创建一个本地化文件夹,用于保存设置文件以及我们之后将创建的本地化资产。但如果您目前只是进行实验,您可以将设置保存在Assets文件夹中。

本地化现在在项目中激活,但我们还有更多工作要做。

请添加您想要支持的区域。

我们需要告知 Unity,我们希望在游戏中支持哪些区域或语言。

点击添加区域,即可看到一个可以选择的区域列表。

在此阶段,您无需一次性选择所有希望支持的区域。由于您正在使用 Phrase Strings,而不是一堆 Excel 表格,添加区域实际上就像在这里选择它们一样简单:只需在此选择区域,在 Phrase 平台中完成翻译,然后将这些翻译后的字符串推送回 Unity 项目。

现在,我们将选择英语、德语和塞尔维亚语的拉丁字母变体。

设置一个默认值,以便在我们不支持用户的首选区域时使用。

值得花点时间谈谈区域回退机制是如何工作的。 

塞尔维亚语就是一个很好的例子,说明了这方面语言的复杂性。塞尔维亚语可以使用西里尔字母和拉丁字母。

西里尔字母是塞尔维亚的官方书写系统,但拉丁字母也被广泛使用。塞尔维亚语还有几种地区方言(Šumadija-Vojvodina、Kosovo-Resava 等)和发音变体(Ekavian 和 Ijekavian)。

通过实现塞尔维亚语的拉丁字母版本(sr-Latn),我们将为所有基于拉丁字母的塞尔维亚语变体的用户提供支持。

即使他们的区域为某个变体,Unity 也会将 sr-Latn 作为默认回退提供给他们。然而,对于那些将系统设置为塞尔维亚语西里尔字母版本(sr-Cyrl)的人来说,这一点并不一定成立。

如果他们的系统设置为回退到拉丁字母,他们将看到该区域,否则他们将看到项目的默认区域。

到目前为止,我们已经从 Unity 的本地化插件正式支持的数百个区域中选择了三个。因此,我们需要为数百万我们不打算支持其首选区域的人设置一个默认区域。

在模态窗口的底部,您可以从我们刚刚选择的区域列表中指定该默认区域。

指定要使用的区域

Unity 本地化还允许我们在游戏加载时选择要使用的区域。有几种不同的方法,包括:

  • 作为命令行参数指定的区域
  • 用户系统提供的区域
  • 不是项目默认区域的其他后备区域。

除非您对其他选项有强烈偏好,否则您可以选择默认顺序。

设置字符串表

Unity 在字符串表中管理本地化内容。每个区域都有自己的表,包含键值对。键是您在 UI 代码中引用的内容,而值则是该语言的实际本地化文本。

在连接 Phrase 与 Unity 之前,请先设置这些字符串表。

窗口顶级菜单中,选择资产管理,然后选择本地化表格。在打开的窗口中,会显示一条消息,提示当前没有表。

我们可以通过点击新建表集合按钮来解决这个问题。默认情况下,我们所有的区域都是选中的,所以我们只需要为集合命名(比如“UI”就可以),然后点击 创建,并将其保存在 Assets 目录中。

这样,您就会有一个空白表格,准备好用于您的翻译。

让我们添加一个准备翻译的键。点击 新建条目 并添加键:

Main/UICamera/Loadout/StartButton/Text

这将让我们本地化《Endless Runner》游戏中用于开始游戏的按钮。

现在我们需要将代码中的硬编码字符串替换掉。在这种情况下,要更改主屏幕上 Run! 按钮的文本,我们需要编辑:

Scripts > GameManager > LoadoutState.cd

首先,我们需要调用本地化插件:

using UnityEngine.Localization.Settings;

然后将 runButton.GetComponentInChildren<Text>().text = “Run!”; 替换为:

runButton.GetComponentInChildren<Text>().text = LocalizationSettings.StringDatabase.GetLocalizedString(“UI”, “UI_RUN_BUTTON”);

我们可以通过运行游戏并更改区域来预览:

安装并连接 Phrase 插件

现在我们已经本地化了一个字符串,接下来将实际的翻译和字符串管理工作交由 Phrase 处理。首先需要安装 Phrase Strings Unity 插件。

在撰写本文时,Phrase Strings 插件尚未在 Unity Asset Store 中提供。因此,我们将通过从 GitHub 仓库克隆,将其安装到您的项目的 Packages > com.phrase.plugin 目录中。

接下来,我们需要将 Phrase 插件连接到 Phrase Strings 本身。这是一个包含两个步骤的过程。

首先,为您的 Unity 游戏创建一个 Phrase Strings 项目。在您的 Phrase Strings 仪表板中,点击 添加项目。为您的项目命名,创建后,添加我们在 Unity 中使用的语言:英语、德语和塞尔维亚语(拉丁字母)。

现在您已经有一个准备好的项目,需要获取一个 API 秘钥,以便将 Phrase Unity 插件与您的 Phrase Strings 账户连接。点击右上角的头像,进入配置文件 > 设置 > 访问令牌。

生成令牌按钮将引导您进入一个模态窗口,您可以在其中生成秘钥。

复制秘钥后,返回 Unity,访问 Assets > Scripts > UI > Settings,然后点击 Phrase 图标。在检查器中,请添加您的 API 令牌,并点击 获取项目

如果一切顺利,您会在列表中看到刚刚创建的项目,并且能看到您的 Phrase Strings 项目与 Unity 项目之间匹配的语言。

我们需要将之前创建的字符串(“Run!”,“Laufen!”和“Trči!”)推送到 Phrase,因此点击 推送到 Phrase

在 Phrase 中完成首次翻译

事实证明,“Laufen!”可能并不是最适合我们游戏德国玩家的用词。“Rennen!”更接近我们所寻找的,因为它可以表示开始比赛。

在 Phrase Strings 项目中,打开 Endless Runner 项目,然后访问 Languages 选项卡。 

点击德语的 编辑器 按钮,您将开始感受到 Phrase Strings 在本地化过程中所提供的帮助,包括自动建议。现在,将“Laufen!”替换为“Rennen!”,然后点击保存

回到 Unity 项目中,点击Pull languages ,确保已选择所有三个区域,然后点击Pull to Unity以从 Phrase Strings 下载更新的翻译。

导入完成后,运行游戏并选择德语区域,以查看我们已更新的字符串的实际效果。

使用 Phrase Strings 进行 Unity 本地化

通过将 Unity 本地化插件连接到 Phrase Strings,您可以简化本地化工作流,无需使用 Google Sheets、Excel 文件、CSV 文件等复杂工具。

在这个简短的介绍中,我们只是初步了解了Phrase Strings如何帮助您以更少的工作量交付更优质的本地化成果。欲了解更多,请阅读我们关于 Phrase-Unity 集成的官方指南。

现代的玩家希望游戏能提供多语言的沉浸体验,但人工本地化流程、分散的团队和翻译错误可能会造成游戏发售的延期,反而阻碍了游戏的全球化。

Phrase 与 Unity 无缝的集成解决了这些痛点,为用户自动化工作流,给译员提供了准确的上下文,这能够加快您的产品上市速度,并确保翻译准确且有影响力。

相关文章

Phrase migration blog post featured image | Phrase

Blog post

迁移到 Phrase 比您想象中简单

了解如何轻松高效地评估、规划和准备迁移到一套更好的翻译和本地化管理解决方案。

Phrase ROI blog post featured image | Phrase

Blog post

Phrase 如何为跨国企业带来 527% 的投资回报率

量化企业级翻译管理系统 Phrase TMS 投资回报率及其对公司利润的影响。

People story blog post featured image | Phrase

Blog post

造物的动力:我的 Phrase Suite 产品总监之路

所有产品人都能从马丁·斯维斯卡成为 Phrase 产品总监的历程里找到共鸣。了解亲手塑造业内领先本地化解决方案的故事。

Localization strategy blog category featured image | Phrase

Blog post

为什么使用云服务器是优化翻译的关键?

使用云服务器进行翻译可以改变您的全球业务。了解云翻译的所有功能和优势。

Stakeholder management blog post featured image | Phrase

Blog post

轻松十步,助您提高应用程序下载量

想知道如何提高应用程序的下载量?战略性实施本地化可以帮助您轻松高效地达成目标。