支持的引擎 · Gettext (.po / .mo)
gettext 是大多数非日系独立游戏的本地化方式:Python 与 pygame 游戏、Solarus、SDL 与 GTK 游戏,以及任何经过 Poedit、Weblate 或 Crowdin 的项目。文本以 .po 源文件和已编译的 .mo 语言包形式存放在 locale 目录中。RuneTranslate 在创建项目时识别它们,翻译每一条字符串,并写回一个可用的 .mo —— 正是运行中的游戏所读取的文件。
gettext 语言包多为界面文本:菜单项、按钮标签、提示与状态栏,会在多个界面反复出现。把你的名词、道具名与关键动词加入术语表一次,之后每次出现都会保持一致 —— 这比对话更重要,因为一处写「保存」、另一处写「储存」的菜单看起来就像 bug。 术语表入门 →
把 RuneTranslate 指向游戏目录 —— 也就是含有 locale/、lang/ 或 i18n/ 文件夹的那个。识别依据是文件的实际字节而非扩展名,因此实际上是 3D 场景的 .mo 会被忽略。一个装着零散 .po 文件的文件夹同样可用。
新建项目对话框会在你确认创建之前,显示读取到多少语言包、其中多少是已编译的 .mo 与多少是 .po 源文件、游戏已自带哪些语言,以及字符串总数。
选择目标语言与翻译服务:免费的 Google 或 DeepL,或你自己的 DeepL、OpenAI、Claude、DeepSeek 密钥。格式占位符 —— %s、%d、%(player)s、{count} —— 会在翻译前被遮蔽、翻译后还原,任何服务都无法删除或改写它们。
字符串按语言包文件分组。每条条目都保留其 gettext 上下文(msgctxt),那是开发者专为该字符串写下的区分说明 —— 你可以看出同一个词为何出现两次,并分别给出正确译文。
导出会生成游戏的完整副本,其中既有规范的 locale/<你的语言>/LC_MESSAGES/ 语言包,也有游戏原先所加载语言包的更新版本,因此无论游戏以何种方式选择语言,译文都会显示出来。.po 与已编译的 .mo 都会写入。