使游戏国际化

简介

如果全世界只讲一种语言,那将是很好的(这将是世界上唯一的一种语言)。不幸的是,对于我们的开发人员来说,情况并非如此。虽然独立或利基游戏通常不需要本地化,但瞄准更大市场的游戏通常需要本地化。Godot提供了许多工具来使这个过程更加简单,因此本教程更像一个技巧和技巧的集合。

本地化通常是通过雇佣特定的工作室来完成的, 尽管有大量的软件和文件格式可供使用, 但迄今为止进行本地化最常见的方式仍然是使用电子表格。创建电子表格并导入电子表格的过程已经在 导入翻译 教程中介绍了,所以这个教程更像是对那个教程的后续。

注解

我们将使用官方演示作为一个示例, 您可以在 Asset Library 下载它们。

配置导入的译文

翻译可以在更改时得到更新和重新导入, 但仍必须添加到项目中。可通过 Project → Project Settings → Localization 来完成:

../../_images/localization_dialog.png

上述对话框用于添加或删除项目范围内的翻译。

资源文件的本地化处理

根据当前语言,还可以指示Godot使用资源(资源)的替代版本。 映射 选项卡可用于此:

../../_images/localization_remaps.png

选择需要重映射的资源,并指定它在其他语言地区的替代方案。

将键转换为文本

Some controls, such as Button and Label, will automatically fetch a translation if their text matches a translation key. For example, if a label's text is "MAIN_SCREEN_GREETING1" and that key exists in the current translation, then the text will automatically be translated.

In code, the Object.tr() function can be used. This will just look up the text in the translations and convert it if found:

level.set_text(tr("LEVEL_5_NAME"))
status.set_text(tr("GAME_STATUS_" + str(status_index)))

使控件可调整大小

不同语言的相同文本的长度差异很大。 为此,请务必阅读以下教程 大小和锚定点 ,因为动态调整控件大小可能有所帮助。 Container 可能很有用,以及 Label 的文本包选项。

TranslationServer类

Godot有一个处理低级翻译管理的服务器,名为 TranslationServer 。 可以在运行时添加或删除翻译; 当前语言也可以在运行时更改。

命令行

从命令行运行Godot时可以测试语言。 例如,要使用法语测试游戏,可以提供以下参数:

godot --language fr

翻译项目名称

导出到不同的操作系统和平台时,项目名称将成为应用程序名称。 要以多种语言指定项目名称,请在 项目设置 中创建一个新设置 application / name ,并将语言环境标识符附加到其中。 例如,对于西班牙语,这将是 application / name_es :

../../_images/localized_name.png

如果您不确定要使用的语言代码,请参阅 list of locale codes