引擎指南FAQPatreonDiscord下载
登录
RuneTranslate · 端到端翻译日语等 30+ 种语言的游戏
引擎指南对比图片文字存档编辑器作弊模式FAQ下载更新日志TrustpilotPatreonDiscordYouTube隐私政策服务条款联系我们
全部引擎

支持的引擎 · Gettext (.po / .mo)

完整支持 — 已重打包并实机运行

PO 文件翻译器 — 翻译游戏的 gettext .po 与 .mo 语言包

gettext 是大多数非日系独立游戏的本地化方式:Python 与 pygame 游戏、Solarus、SDL 与 GTK 游戏,以及任何经过 Poedit、Weblate 或 Crowdin 的项目。文本以 .po 源文件和已编译的 .mo 语言包形式存放在 locale 目录中。RuneTranslate 在创建项目时识别它们,翻译每一条字符串,并写回一个可用的 .mo —— 正是运行中的游戏所读取的文件。

该引擎的术语表提示

gettext 语言包多为界面文本:菜单项、按钮标签、提示与状态栏,会在多个界面反复出现。把你的名词、道具名与关键动词加入术语表一次,之后每次出现都会保持一致 —— 这比对话更重要,因为一处写「保存」、另一处写「储存」的菜单看起来就像 bug。 术语表入门 →

下载 Windows 版 RuneTranslate

如何翻译 Gettext (.po / .mo)

  1. 步骤 1

    打开游戏文件夹

    把 RuneTranslate 指向游戏目录 —— 也就是含有 locale/、lang/ 或 i18n/ 文件夹的那个。识别依据是文件的实际字节而非扩展名,因此实际上是 3D 场景的 .mo 会被忽略。一个装着零散 .po 文件的文件夹同样可用。

  2. 步骤 2

    查看识别结果

    新建项目对话框会在你确认创建之前,显示读取到多少语言包、其中多少是已编译的 .mo 与多少是 .po 源文件、游戏已自带哪些语言,以及字符串总数。

  3. 步骤 3

    选择语言与翻译服务

    选择目标语言与翻译服务:免费的 Google 或 DeepL,或你自己的 DeepL、OpenAI、Claude、DeepSeek 密钥。格式占位符 —— %s、%d、%(player)s、{count} —— 会在翻译前被遮蔽、翻译后还原,任何服务都无法删除或改写它们。

  4. 步骤 4

    在编辑器中校对

    字符串按语言包文件分组。每条条目都保留其 gettext 上下文(msgctxt),那是开发者专为该字符串写下的区分说明 —— 你可以看出同一个词为何出现两次,并分别给出正确译文。

  5. 步骤 5

    导出可游玩版本

    导出会生成游戏的完整副本,其中既有规范的 locale/<你的语言>/LC_MESSAGES/ 语言包,也有游戏原先所加载语言包的更新版本,因此无论游戏以何种方式选择语言,译文都会显示出来。.po 与已编译的 .mo 都会写入。

支持内容

  • 已编译的 .mo 语言包 —— 可读可写,支持两种字节序,已在 43 个真实语言包、93,717 条条目上验证
  • .po 源文件,包括复数形式、msgctxt 上下文、标记与译者注释
  • 规范的 locale/<语言>/LC_MESSAGES/<域>.mo 结构,以及 lang/tr.po 这类扁平结构
  • 复数形式按目标语言重新适配(英语 2 种 → 俄语 3 种 → 日语 1 种),并相应重写文件头
  • printf 与花括号占位符(%s、%d、%(player)s、{count}、{0})在翻译期间遮蔽、之后还原
  • 导出既写入新语言,也覆盖游戏原先加载的那个语言包

局限

  • 在依赖它之前,请先确认导出的版本能够启动并正确显示文本
  • 只有已经存在于语言包中的文本会被翻译 —— 开发者从未经由 gettext 处理的字符串不在 .po/.mo 里,也就无从取到
  • msgid 被视为原文,这是 gettext 的约定;若某语言包的 msgid 是英文而真正的源语言在 msgstr 中,则会从英文翻译
  • 基于已直接支持的引擎(Godot、Unity、Ren’Py……)制作的游戏由该引擎处理,这样其余文本也能被取到
  • 未翻译的条目会保留游戏原有的译文,而不会被清空

延伸阅读

完整的 Gettext (.po / .mo) 翻译教程
阅读指南 →

延伸阅读

RuneTranslate vs Translator++
阅读指南 →

其他支持的引擎

RPG MakerRPG Maker XP/VX/AceRen'PyKirikiriWolf RPGTyranoBuilderElectron VNUnityBakinSRPG StudioNScripterGodotArtemisYU-RISAliceSoftUnrealLiveMaker