5
Down
12
collect
Report
share

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.
插件下载:
Hide content, please check it after Log in
N friends have already viewed unlocked content, and all points are available on this site for free. Come and register.
Download content
Current locked content may contain download files, please unlock to view the full text
Hide content, please check it after Log in
N friends have already viewed unlocked content, and all points are available on this site for free. Come and register.
DeclarationAll articles on this site, unless otherwise indicated or marked, are original publications of this site. Any individual or organization is prohibited from copying, stealing, collecting, or publishing the content of this site to any website, book, or other media platform without the consent of the author. If the content of this site infringes upon the legitimate rights and interests of the original author, please contact us for processing: DMCA Report
Follow Us














用AI学习新事物
暂停原因:功能足够,并且需要收集问题和错误报告才能进行下一步改善工作
目前不考虑的功能:在线翻译API、MCP协议等(影响实时翻译性能)
看收藏 t2 t3避雷rpg繁多狗屎
实测不行的话,之后改写下代码做适配就行。
This guy seems to be very shy (bushi
This guy seems to be very shy (bushi
This guy seems to be very shy (bushi