使游戏国际化
前言
如果全世界只讲一种语言, 那将是很好的(这将是世界上唯一的一种语言). 不幸的是, 对于我们的开发人员来说, 情况并非如此. 虽然独立或利基游戏通常不需要本地化, 但瞄准更大市场的游戏通常需要本地化.Godot提供了许多工具来使这个过程更加简单, 因此本教程更像一个技巧和技巧的集合. 导入翻译 教程中介绍了, 所以这个教程更像是对那个教程的后续. 注解 Asset Library 下载它们.
配置导入的译文
Project → Project Settings → Localization 来完成: 上述对话框用于添加或删除项目范围内的翻译.
资源文件的本地化处理
映射 选项卡可用于此: 选择需要重映射的资源, 并指定它在其他语言地区的替代方案.
将键转换为文本
Button 和 Label, 如果它们的文本与一个翻译键值相匹配, 将自动获取翻译内容. 例如, 如果一个标签的文本是 “MAIN_SCREEN_GREETING1” 并且该键值存在于当前的翻译中, 那么该文本将被自动翻译. Object.set_message_translation 并发送 Object.notification 来更新翻译:
func _ready(): # This assumes you have a node called "Label" as a child of the node # that has the script attached. var label = get_node("Label") label.set_message_translation(false) label.notification(NOTIFICATION_TRANSLATION_CHANGED)
对于 OptionButton 等更复杂的 UI 节点,你可能要用这个代替:
func _ready(): var option_button = get_node("OptionButton") option_button.set_message_translation(false) option_button.notification(NOTIFICATION_TRANSLATION_CHANGED) option_button.get_popup().set_message_translation(false) option_button.get_popup().notification(NOTIFICATION_TRANSLATION_CHANGED)
Object.tr() 函数. 这将只是在翻译中查找文本, 如果找到的话就进行转换:
level.set_text(tr("LEVEL_5_NAME"))status.set_text(tr("GAME_STATUS_" + str(status_index)))
使控件可调整大小
大小和锚定点 , 因为动态调整控件大小可能有所帮助. Container 可能很有用, 以及 Label 的文本包选项.
TranslationServer
TranslationServer . 可以在运行时添加或删除翻译; 当前语言也可以在运行时更改.
命令行
从命令行运行Godot时可以测试语言. 例如, 要使用法语测试游戏, 可以提供以下参数:
godot --language fr
翻译项目名称
项目设置 中创建一个新设置 application / name , 并将语言环境标识符附加到其中. 例如, 对于西班牙语, 这将是 application / name_es :
list of locale codes .
