ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Godot 多语言本地化:3 个真实场景讲透 PO 文件正确用法

Godot 多语言本地化:3 个真实场景讲透 PO 文件正确用法 Godot 多语言本地化3 个真实场景讲透 PO 文件正确用法【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godotGodot 的多语言支持靠 PO 文件承载各语言文本但很多人导入后卡在这几个坎上翻译不生效、复数不会写、译文太长把界面撑爆。这篇文章直接从最小可运行方案讲起用 3 个真实场景带你把 PO 文件在 Godot 本地化里的正确用法跑通最后给一份排查清单。先跑通 10 分钟最小多语言配置 可以把 PO 文件理解成一本台词本 对照表左边是英文原文右边是对应语言的译文。一个最小的 PO 文件长这样msgid Welcome to the Game! msgstr 欢迎来到游戏 msgid Player Score: %d msgstr 玩家得分%d跑通只需要三步把.po文件放进项目目录打开项目设置 → 国际化Internationalization→ 语言区域Locale→ 翻译Translations把 PO 文件路径加进去——这一步就是开关漏了它一切白搭运行游戏。Godot 会根据当前语言自动加载对应翻译无需额外代码。要批量收集原文用编辑器内置的本地化编辑器4.x 里在项目菜单 → 工具 → Localization Editor相关实现位于 editor/translations/ 模块把项目里的.gd脚本文件添加为模板源点生成就能导出一份.pot模板——相当于空白台词本所有待翻译原文都列好了直接发给译者即可。场景 1同一句话两个界面两种意思Start 在主菜单是开始游戏在暂停菜单可能是继续。原文只写 Start译者只能猜猜错就是线上事故。解法是给词条加上下文在这一条前面多写一行msgctxt Main MenuGodot 就会把场景 原文整体当作一个词条两个界面的 Start 各自独立、互不覆盖匹配时优先用带上下文的条目。这套上下文匹配逻辑在 core/string/ 模块里实现。⚠️ 有一个例外要记住优化后的翻译格式OptimizedTranslation不支持上下文如果项目里用了这种格式带上下文的条目会被引擎警告并忽略。场景 21 个苹果和 2 个苹果中文是1 个苹果 / 2 个苹果英语是 1 apple / 2 apples而俄语按数字不同有三种变体。PO 文件里用复数词条表达一条原文同时给出单数和复数形式译文侧对应写下每种形式各一条。使用上你不需要自己写 if/else——把数字交给翻译函数Godot 会按当前语言的复数规则自动挑中正确的那条。各语言的复数规则表内置在引擎里同样在 core/string/ 模块中中文、日语都属于只有一种形式的语言所以做中文本地化时基本不会碰到这个坑但做俄文、波兰文、阿拉伯文时它就是必答题。场景 3译文比原文长界面被撑爆德语、俄语普遍比英语长 15% 到 30%英语下尺寸刚好的按钮和 Label换上译文很容易截断或换行错乱。三个常用对策给Label打开自动换行autowrap属性文字超宽时自己折行用引擎内置的文本宽度自适应逻辑scene/gui/label.cpp 中的 fit_to_width文字会自动缩放或加省略号从设计阶段就假设文字会变长按钮和面板预留 15%30% 的余量。翻译不生效4 个排查点PO 文件导进去了界面却还是英文按这个顺序查九成能定位文件没加进 Translations 列表——项目设置里加了文件却不启用等于没加当前语言不是目标语言——确认项目设置里的语言区域配置必要时用OS.get_locale()core/os/os.h打印实际语言看看系统返回的是不是你期望的那个编码或内容有问题——PO 文件必须是 UTF-8里面混入全角引号等非法字符会让解析中途截断词条冲突——两条 msgid 相同会互相覆盖或者原文带了上下文、你按无上下文去搜自然找不到。效率工具链编辑器内置本地化编辑器模板生成、翻译管理、逐条预览都在这一处不用离开编辑器Poedit跨平台 PO 编辑工具有语法高亮和翻译记忆适合译者个人使用Weblate开源协作翻译平台多语言外包、团队分工时用它管理翻译完成后在编辑器里就能逐语言预览效果不用每次导出运行。避坑清单文本一律走翻译函数不要硬编码进代码译文保留%d、%s这类占位符不删、不乱序PO 文件纳入版本控制译者和开发者基于同一份文件改同一项目里别混用 PO 文件和优化翻译格式否则带上下文的条目会被静默丢弃。上线前先把支持的语言列表定死文本集中管理、避免散落在各脚本里UI 尺寸按文字变长 15%30%预留余量——这三件事做到位多语言版本基本不会再出结构性问题。【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表