最近把自己写的一个 Unreal Engine 插件开源了:
它叫 AI Localization,是一个只在 Unreal Editor 中运行的 AI 辅助本地化插件。简单来说,就是把原本需要导出、翻译、再导回去的本地化流程,尽量收进编辑器里完成。
这个插件最初是为我的游戏 Lover Completion Plan 做的。它不是什么特别成熟的大型工具,更像是一个从真实需求里长出来的小项目:够我自己用,也顺手把它放出来了。
事情是怎么开始的
在写这个插件之前,我已经有一套能工作的翻译流水线。
先从 Unreal 导出某种目标语言的 .po 文件,再把文件拖到一个 Python 脚本上。脚本会调用 AI,把内容翻译成文件里指定的语言,并输出一份翻译完成的 .po 文件。
这套方式本身没有问题,甚至已经帮我省下不少时间。但我的游戏需要支持十种语言,如果每一种语言都要单独导出、拖文件、等待翻译、检查结果、再导回项目,重复操作还是很多。语言一多,真正浪费时间的往往不是 AI 翻译本身,而是这些围绕文件来回处理的步骤。
后来我看到了 AI Localization Automator。它的思路和完成度都不错,我也很喜欢这种把翻译流程直接放进编辑器的方式。不过对我这个项目来说,它的价格有点高,于是我就开始想:既然需求已经很明确,能不能自己做一个只满足当前项目需求的版本?
我先把需要解决的流程和大致规划写下来,再让 AI 协助实现。最后得到的就是现在这个插件。它不算精致,但能够配置自己的 API 供应商,把游戏本地化内容整体交给 AI 处理,已经把我最在意的效率问题解决掉了。
插件现在能做什么
AI Localization 会接入 Unreal Editor 的本地化工具:
- 可以从 Tools > Localization > AI Localization Manager 打开管理器。
- 也会出现在 Localization Dashboard 中,并为本地化 Target 和 Target Set 加上 AI Translate 按钮。
- 可以选择本地化 Target、一个或多个目标语言,以及适合不同文本类型的预设。
- 支持 OpenAI-compatible 的
/chat/completions接口,因此可以配置自己的 endpoint、模型和 API key。 - 可以控制批大小、并发数、重试次数、超时、最大输出 token、temperature、仅翻译缺失项和是否覆盖已有译文。
- 翻译结束后,成功结果会先暂存,再通过 Apply & Compile 走 Unreal 原本的导入和编译流程。
基本使用流程就是:选择 Target 和目标语言,配置 Provider,点击 Start Translation,检查表格中的结果,最后再 Apply & Compile。这样不需要把 .po 文件反复拖到外部脚本上,翻译、检查和应用都留在同一个工作流里。
我是怎么给 AI 补上下文的
游戏文本不是单独一句一句存在的。尤其是剧情、对话和角色台词,如果模型只看到一条孤立文本,翻译很容易丢掉说话人、场景和前后顺序。
所以这个插件里用了一个比较简单的上下文策略:
- 场景区分:先用
namespace区分文本所属的场景或上下文。 - 顺序整理:再按
key对说话人和文本顺序排序。
这样一来,同一场景里的内容会尽量一起交给模型处理,模型能看到更连续的上下文。它当然不是万能的剧情理解系统,但对我项目中的对话翻译来说已经比完全随机、逐条发送稳定不少。
插件还会保护一些不能被翻坏的结构:Unreal 占位符、printf 格式符、富文本标签、首尾空白和多行换行数量都会在接受译文前校验。校验失败的条目会保留给人检查,不会被自动导入。多行文本也会使用受保护的换行 token,减少模型擅自重排换行带来的问题。
成本和取舍
整个插件从规划到可用,AI 开销大概只花了四十多元,不到五十元。对比当时我看到的商业方案,自己做这个小工具的成本还是挺有意思的。
当然,这不是说它能直接替代成熟产品。商业插件有更完整的支持、长期维护和更广泛的兼容性;我这个版本的目标只是把自己的实际翻译流程跑顺。它目前只支持 OpenAI-compatible chat-completions 接口,不支持 streaming response、模型发现和费用统计;它也是 Editor-only 插件,不负责打包后游戏运行时的实时翻译。
API key 也不会写进项目源码。Windows 下会使用 Windows Credential Manager 保存凭据,其他平台只在当前 Editor 会话内保存;预设文件只记录是否存在凭据,不保存 key 本身。
开源出来
现在这个项目已经按照 MIT License 开源:
- GitHub 仓库:OldWood-u/AILocalization
- 安装方式:将插件放到项目的
Plugins/AILocalization目录,启用后从 Unreal Editor 的 Tools 菜单打开管理器。
说到底,它就是我为自己的游戏随手做出来的一个小工具,估计大部分时间也只会在自己的项目里使用。不过目前该有的流程基本都能跑,实际用起来也还不错。
如果它刚好能帮到同样需要给 Unreal 项目做多语言本地化的人,欢迎直接使用、修改或 fork;Issue、Pull Request 和改进建议也都欢迎。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时