4
反对
11
收藏
分享

AI写的RPG MV翻译插件(PC/安卓JOI)



文本追踪 (TextTracker v3) 可在游戏过程中逐步捕获所有未翻译的日语文本:
通过假名检测(平假名/片假名)识别日语,只记录未被翻译的文本
匹配优先级: 精确 > 正则 > 部分匹配 > 原文
* 【幂等性说明】
* - 单次 translate() 调用只会应用一条规则
* - 避免 A→B→C 的级联替换现象
* - 结果更加可预测和稳定
这个插件需要读data目录下的translations.json翻译文件。
json里面的内容格式:
{
"初めから": "从头开始",
"つづく": "继续",
"タイトルへ": "返回标题",
"取り消し": "撤销",
"__regex__": [
["HPを([0-90-9]+)回復する", "HP回复$1点"],
["正则模式1", "替换文本1"],
["正则模式2", "替换文本2", "gi"],
["([0-9]+)回$", "$1次"],
["回", "次"] 注释:这种写法容易出问题,最好在规则中添加其他特征(比如前面带数字,限制范围:使用 \b ^ $ 边界符)
]
}
优先级排列原则:
┌────────────────────────────────────┐
│ 1. 最具体/最长的模式 ← 高优先级
│ 2. 中等具体的模式
│ 3. 最通用/最短的模式 ← 低优先级
└────────────────────────────────────┘
对于数据外置版本,需要在data文件夹中建立配置文件translator_config.json。
一般情况下,插件进入游戏后会自动进行翻译。按下F9键开启UI界面,选择启用或者是关闭翻译。
关于翻译字体拦截:

接着说下怎么让Claude写出来的插件:
一开始是只知道找变量来进行字符串修改,让AI生成CE的Lua脚本来批量处理Json数据(没啥用)。
后面就是让AI生成JS插件:
1. 提出基本功能描述。
2. 去搜索RPG Maker MV的Library和Database。
3. 复制粘贴一个Classes列表和Database列表给到Claude。
4. 让AI处理这些列表,添加注释和说明,生成一个专业化的速查表文档。
5. 切换到其他AI(例如gemini、grok、gpt),让他们对文档进行事实核查(修正)和二次补充。
6. 将最终批改完成的文档发给AI,再次强调下功能描述(好的模型是不需要反复去强调)、然后它就会自己挑有用的内容来拼凑出翻译插件。
7. 将写出来的代码内容进行事实核查。
8. 反复迭代版本。
---
AI有自作聪明的表现:
- 每个ts文件都写个向后兼容/外部API接口等之类的东西。
虽然合理,不过有点问题(AI不会移除冗余的接口和代码。每次都把注意力分散到接口,浪费Token)
- 喜欢把事情弄复杂,偏好写复杂代码。有时不会抽取通用逻辑,函数之间有重叠功能的代码
- 有些算法和功能都会优先独立实现而不是导入外部依赖包。独立实现还是有好处的:这提高了旧版兼容性
目前我完全是个萌新,因为杀软误封Mtool我才去接触MV和JS知识。
关于版本说明:
v7.0.8 & v7.0.9版本改动:
* - 新增存档提醒功能:
* - 按下F9键时先弹出确认框提醒玩家保存存档
* - 支持"下次不再提醒"选项(仅当前游戏会话有效)
* - 可通过 TranslatorSaveReminder.reset() 重置提醒设置
* - 简化F9确认框样式:
* - 使用innerHTML一次性创建DOM,减少DOM操作
* - 采用事件委托统一处理按钮点击
* - 精简CSS样式,提升渲染性能
* - 性能优化:
* - S.isOn() 使用预构建的安全映射表,避免每次遍历
* - Bloom Filter 哈希函数内联常量,缓存字符串长度
* - 翻译器核心函数缓存数组长度和引用
* - U.each() 缓存数组长度减少属性访问
v7.1.0版本改动:
* - TypeScript 重构,代码模块化
* - 统一版本号管理,从 package.json 读取
* - V8 引擎性能优化(保持 ES5 兼容)
* - Terser 压缩 + Tree-shaking 优化
v7.1.1 ~ v7.1.3版本改动:
* - 重构了UI界面,解决v7.1.0的页面渲染问题
* - 添加了一些默认值后备,重写了JSON配置加载机制
* - 修复自定义 Hook 动态安装UI显示功能
* - 修复自定义 Hook 安装状态同步时机问题,参考了v7.0.9版:
* - 解决UI显示上"已安装"但实际上没启用Hook的问题
* - 修复在个别注释中仍然使用硬编码的版本号问题
v7.1.4 & v7.1.5版本改动:
* - 在"部分"页面中添加"提取"到正则匹配规则的功能
* - 移除了配置文件中的keycodes,转为使用panelkeys
* - 使用工厂函数来统一处理页面样式、选择列表等样式
* - 修复面板按键误触发问题(再次打开面板时误读之前的按键状态):
* - 最难解决:直接让AI分析代码没法解决,要AI先分析每一帧数时序关系、对应的按键事件后,才能去处理代码中的问题。
* - 解决了插件fs模块报错,在代码使用了node:fs(ESLint 等分析推荐我使用最新node前缀,但实际上MV/MZ不支持),现在改为原本的fs
v7.1.6 v7.1.7版本改动:
* - 新增"调试"页面,显示控制台信息
* - 默认开启debugMode,在调试页面中显示
* - 实现背景半透明 + Tile/Cell-based 重绘架构(干净)
* - 移除大量硬编码文本,转移至json配置文档
* - 修改"部分"页面的提取正则方法,改成以原文为基础
* - 在"正则"页面显示规则命中状态(黄色"[已命中]"标签)
* - 新增Cuckoo/Bloom过滤智能切换功能
* - 默认从 Cuckoo Filter 64KB 起步(只要内存估算不超过限制),适合低配机器玩小作品
* - 切换到 Bloom Filter 256KB 的条件只有:**插入失败**、**内存超限**、**负载因子过高
* - 重构存档提醒对话框,使用RPG MV/MZ原生功能实现(兼容安卓平台)
* - 修复游戏中弹窗的焦点问题(鼠标点击问题)
* - 将save-reminder改写为简单精灵组件、由UI面板来调用
* - 交给单一场景和堆栈进行管理
* - 使用 window.prompt() 替代复杂的渲染逻辑:简单粗暴,不会有渲染逻辑和时序错误,能准确在渲染报错前提醒你存档
* - 更换新算法(经过多次核查得出的、发现Bloom的作用有局限,最终决定只拿来检测和去重)
* - 精确匹配存储:SwissTable(替代原生 Map)
* - 正则匹配搜索:预过滤 + 原生RegExp
* - 部分匹配搜索:Aho-Corasick 多模式匹配算法
* - 原文预过滤 (bloom):快速判断文本是否可能是原文键
* - 译文检测 (transBloom):快速判断文本是否可能是已翻译的译文
* - 移除旧算法:长度分桶
* - 完善统计页面的统计信息
---
v7.2.0 版本改动(重要:之后都是核心版本,没有多余功能):
重写项目改为核心版本,因为项目越写越大,功能太多导致维护/认知成本太高。
只保留了跟翻译性能优化有关的算法LRU、Aho-Corasick等。
增强了自定义Hook的配置功能,现在翻译Hook完全依靠JSON进行配置。项目里没有内置硬编码(Window_Base之类的)。
增加了CJK字体安装功能,可以在JSON中配置自定义字体,或者使用默认提供的字体NotoSans-Regular。
v7.0.9版本能够兼容还在使用旧版RPG引擎的游戏。
之后用typescript重构的项目,用了一些现代依赖,比如zod和neverthrow,旧版可能不兼容。
v7.2.1 版本改动:
移除了zod和neverthrow,使用独立实现类似功能。
实现严格错误显式,解析不成功直接alert报错。
v7.2.2 版本改动:
修复globalThis未定义问题,改为window。
新增字段 "__sourceLocale__": "ja" 用于判断未翻译文本
// 日语:平假名 + 片假名
if (locale === "ja" || locale === "jp" || locale === "jpn") {
return /[\u3040-\u309F\u30A0-\u30FF]/;
}
// 韩语:谚文(韩文字母)
if (locale === "ko" || locale === "kor" || locale === "kr") {
return /[\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F]/;
}
// 英语:基本拉丁字母
if (locale === "en" || locale === "eng" || locale.startsWith("en-")) {
return /[a-zA-Z]/;
}
重写UI界面。实现翻译核心与UI界面项目分离。管理两个项目而不是合并为一个大项目。减少排错难度。
v7.2.3 版本改动:修复 `__regex__` 字段没有对flags进行处理的问题。
模型使用:claude-opus-4-5(thinking), gemini-3-pro, etc.
插件下载:
隐藏内容,请登录后查看
已有N位咔友解锁内容查看,积分在本站全免费获取,快来注册吧
下载内容
当前锁定内容可能含有下载内容,请解锁后查看全文
隐藏内容,请登录后查看
已有N位咔友解锁内容查看,积分在本站全免费获取,快来注册吧
声明本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得UP主同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理: DMCA投诉/Report


用AI学习新事物
暂停原因:功能足够,并且需要收集问题和错误报告才能进行下一步改善工作
目前不考虑的功能:在线翻译API、MCP协议等(影响实时翻译性能)
这个咔友似乎很害羞(bushi
实测不行的话,之后改写下代码做适配就行。
这个咔友似乎很害羞(bushi
这个咔友似乎很害羞(bushi