Skip to content

国际化与剧情本地化

Konado 直接使用 Godot 的 TranslationServer 管理当前语言、UI 翻译、语言回退和变更通知,不维护第二套国际化状态。Konado 只为 Godot 不理解的 KonadoScript 剧情文件提供本地化覆盖与结构校验。

内置界面翻译使用 Godot 原生 .po 文件,支持简体中文、繁体中文、英语、日语和韩语。

切换语言

通过设置面板或下面的接口切换语言并保存用户选择:

gdscript
KonadoSettings.set_setting("display", "language", "ja")

仅切换当前会话时,直接使用 Godot:

gdscript
TranslationServer.set_locale("ja")
print(TranslationServer.get_locale())

需要响应语言变化的自定义节点应使用 Godot 原生通知:

gdscript
func _notification(what: int) -> void:
	if what == NOTIFICATION_TRANSLATION_CHANGED:
		_refresh_text()

Konado 的对话管理器会响应同一通知,并安全替换当前剧情的本地化内容。

UI 翻译

项目设置 → 本地化 → 翻译 中添加 .po.mo 或 Godot 导入生成的翻译资源。建议使用稳定、唯一的消息键:

gdscript
title_label.text = tr("MY_GAME_SETTINGS_TITLE")

运行时也可以直接使用 Godot API 注册临时翻译:

gdscript
var translation := Translation.new()
translation.locale = "fr_CA"
translation.add_message("MY_GAME_SETTINGS_TITLE", "Paramètres")
TranslationServer.add_translation(translation)

剧情文件命名

基础剧情文件:

text
res://dialogues/chapter.ks

对应语言文件:

text
res://dialogues/chapter.zh_Hans.ks
res://dialogues/chapter.zh_Hant.ks
res://dialogues/chapter.en.ks
res://dialogues/chapter.ja.ks

Konado 按“完整语言码 → Godot 推导的语言与书写系统 → 基础语言 → 默认剧情”的顺序查找。例如 zh_CN 可以回退到 zh_Hans,最终回退到 chapter.ks

本地化剧情可以修改文本以及演员、立绘、背景、镜头、音频和演出时长等表现参数。指令类型、控制流和稳定指令 ID 必须与基础剧情一致;编辑器会将演出差异显示为警告,而结构差异仍是错误。加载时会先校验完整覆盖,避免无效文件部分覆盖或破坏正在播放的剧情。

手动加载本地化剧情

通常无需手动加载。自定义工作流可以使用剧情本地化适配层;省略语言参数时会读取 TranslationServer

gdscript
var shot: KonadoShot = KonadoStoryLocalization.load_localized_script(
	"res://dialogues/chapter.ks"
)

Konado.NET 项目使用 TranslationServer 切换语言,并通过 KonadoApi.StoryLocalizationApi 解析或加载本地化剧情。

Released under BSD3-Clause License.