国际化游戏

介绍

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

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

注解

我们将以官方演示为例;您可以 download it from the Asset Library .

配置导入的翻译

翻译可以在更改时得到更新和重新导入,但它们仍然必须添加到项目中。这是在 项目→项目设置→本地化

../../_images/localization_dialog.png

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

本地化资源

还可以指示Godot根据当前语言使用资产(资源)的其他版本。这个 重新映射 选项卡可用于:

../../_images/localization_remaps.png

选择要重新映射的资源,然后为每个区域设置添加一些备选方案。

将键转换为文本

一些控件,例如 ButtonLabel ,将在其文本与翻译键匹配时自动获取翻译。例如,如果标签的文本是“主屏幕问候语1”,并且当前翻译中存在该键,则文本将自动翻译。

在代码中, Object.tr() 可以使用函数。这将在翻译中查找文本,如果找到以下内容,则将其转换:

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 .