用途:在 Godot 4.3+ 项目中实现本地化(i18n/l10n),覆盖翻译文件、运行时语言切换、RTL 与复数。示例以 GDScript 为主,附 C#。
主要能力:用 tr() 包裹面向用户的字符串;用 CSV 或 PO(Gettext)文件建立键到译文的映射并导入为 Translation 资源;通过 TranslationServer.set_locale() 运行时切换语言,get_locale()/get_loaded_locales() 查询;Control 节点的 text、tooltip_text、placeholder_text 匹配键时自动翻译,可用 auto_translate_mode 关闭。复数用 tr_n(),需 PO 或 Godot 4.6+ 的 CSV ?plural 行。RTL 需设置 layout_direction(RTL 或 LOCALE)、structured_text_type 及覆盖目标文字的字体,并在语言变化时重新应用;TranslationServer 无信号,可监听 NOTIFICATION_TRANSLATION_CHANGED。
使用方式:在 Project Settings → Localization → Translations 注册 .csv/.po,或运行时 TranslationServer.add_translation()。CSV 首列为键,后续列为语言代码;PO 用 msgid/msgstr。格式化须先 tr() 再套用 %s/%d。建议用语义键(如 MENU_START),按 translations/fonts/themes 组织文件。
适用场景:多语言游戏或应用的界面、道具、对话文本本地化,含阿拉伯语、希伯来语等 RTL 语言与多复数形式语言。
限制:GDScript 无本地化数字/日期格式化,需手动分组数字,C# 可用 CultureInfo;Godot 默认字体不含 CJK、阿拉伯文等字符,需另配字体;CSV 复数与 ?context 需 Godot 4.6+,4.6 前复数只能用 PO;4.7 起 OptimizedTranslation.generate() 返回 bool,预编译 C# 插件需重编译;编辑器语言预览为 Godot 4.5+ 且仅编辑器内生效。