☰
Godot 游戏本地化:吃透 PO 文件 3 个核心环节
2026/11/4 19:24:27 网站建设 项目流程

Godot 游戏本地化:吃透 PO 文件 3 个核心环节

【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godot

你的 Godot 游戏快上线了,想支持日语。最直接的念头是把代码里的英文一句句改掉,文本一多就乱套。标准做法是用 PO 文件(纯文本的翻译对照表)把所有文字集中到一份文件里管理。本文以「让游戏显示成日语」这条任务为线索,边做边讲:文件格式、模板导出、引擎里的解析规则。

看懂 PO 文件:原文和译文的两栏对照表

PO 文件(Portable Object 文件,就是纯文本)里每个条目记录一对「原文 + 译文」。msgid 是源语言文本,msgstr 是目标语言译文,以 # 开头的注释是给翻译者看的,引擎解析时会跳过:

msgid "Start" msgstr "开始" msgid "Score: %d" msgstr "得分:%d"

注意示例里的%d占位符。翻译时可以调换语序,但占位符本身要保留,运行时数字才填得进去。解析逻辑在core/io/translation_loader_po.cpp里,解析器逐行读取。有个细节值得知道:条目标了fuzzy注释的,会被当作「未人工确认」直接跳过,这是防止机器翻译的劣质文本直接显示给玩家。

在编辑器里一键导出翻译模板

模板不用手写。打开编辑器的「Translation」管理面板,选中日语,点「Generate」。编辑器会扫描工程,把所有被tr()函数包住的字符串收集起来,生成一份 .pot 模板文件。tr 是全局函数:运行时按参数查表,查到返回译文,查不到返回原文。把这份模板复制一份、把扩展名改成 .po,就是日语翻译的起点。导出逻辑在editor/translations/目录下,template_generator 相关文件负责收集这些字符串。

写完译文也不用每次打包运行去验证。编辑器场景树里可以临时切换预览语言,直接在编辑窗口里看到日语效果。

给 PO 文件补上两道保险:上下文与复数

第一个坑是同一个词意思不同。主菜单的 "Start" 是「开始游戏」,暂停菜单里其实是「继续」。在条目上多加一行 msgctxt 就能区分开,引擎会优先匹配带上下文的那条:

msgctxt "Main Menu" msgid "Start" msgstr "开始游戏"

第二个坑是复数。英语 "1 apple" 和 "2 apples" 形式不同,中文则统一说「N 个苹果」。用 msgid_plural 写复数原文,再用带下标的 msgstr[N] 写各形式的译文。中文只需一个形式:

msgid "You have 1 apple" msgid_plural "You have %d apples" msgstr[0] "你有%d个苹果"

文件头部要有 Plural-Forms 声明,写明这门语言有几种形式,引擎按数字选出该用哪一条。换英语翻译文件时就得写满 msgstr[0] 和 msgstr[1]。选形式的逻辑在core/string/translation.cpp里。

翻译不生效先查这 3 处

不少人遇到同类问题:.po 加上了,游戏里却还是英文。第一处看项目设置的 internationalization 列表,文件必须登记进 translations 列表,对应键名是 internationalization/locale/translations。第二处确认当前生效的是哪种语言:查表依据当前 locale(白话:游戏此刻使用的语言),目标 locale 没设置,日语条目永远不会被用到。第三处打开 .po,核对头部 Plural-Forms 声明的形式数和实际 msgstr[] 条数是否一致。对不上时解析器会整条拒收,并打印带文件路径和行号的报错,照着行号跳过去改就行。

现在就打开编辑器,点一次「Generate」拿到第一份 .pot 模板,填 5 条日语并登记进项目设置。按 F5 看到画面出现日语,这条本地化链路就走通了,下一步可以把 .po 交给译者或翻译平台。

【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询