GitHub - Wulian233/mcmod-translation-dict: 最好的Minecraft中文模组翻译对照词典 (original) (raw)
MC模组翻译参考词典
关于本项目
本项目旨在解决两个核心问题:
一方面,为了适应 CFPA 团队翻译数据的持续更新扩充, 同时应对原MC百科数据更新缓慢、页面使用不便的现状, 我们以MC百科版功能和页面为参照开发了开源网页版本,不仅完整保留原有功能,还新增了中英互查、暗色模式、移动端适配、加强版数据库等增强特性;
另一方面,针对部分热门 Minecraft 模组(如机械动力)的简体中文翻译由开发者直接维护(而非通过CFPA社区协作), 导致 CFPA 官方维护的MC百科模组词典(数据源为 i18n-dict)存在更新滞后或内容缺失的问题。 本项目通过使用加强版的数据库,有效弥补了这一缺口。
欢迎各路大佬高手为本项目提出建议和意见,或参与贡献!
功能特色
- 智能搜索,搜索结果按输入匹配度和出现次数综合排序,支持按 modid 筛选搜索结果
- 多种模式,支持英查中和中查英两种模式译文互查
- 智能合并,智能识别同一模组的不同版本译文并统一展示
- 自动分页,一页50条结果,网页下方支持快速跳转首页/尾页
- 记录键名,鼠标悬停在
所属模组条目上方时会显示译文对应的键名 - 及时更新的数据源
- 页面美观,支持暗色模式,并且对手机上的显示效果进行了单独优化
技术细节
我们建议开发者搭建属于自己的 API。由于词典数据库过于庞大,超过七十万行, 以及 Cloudflare Worker 的免费限制,一天能查询的数量有限,如果过多的用户查询很有可能不堪重负。
本项目网站关于部署及注意事项均在下面列出,供有兴趣的开发者搭建自己的版本。
前端
所需环境:NodeJS
本项目前端网页使用 Vue + JS 编写,并使用 Vite 作为本地开发服务器与构建工具。 请使用下面的命令安装依赖并启动本地开发服务器:
本项目将其托管在了 Vercel 上并连接了 Github 仓库,仓库推送更新自动同步项目页面。
在部署自己的项目时,请记得将 frontend\config.js 里的 baseUrl 替换为你部署的 API 地址。
另外还在前端做了速率限制(可配置时间),每秒最多搜索一次。
后端
所需环境:NodeJS + Cloudflare Worker + D1 数据库
本项目所用的后端数据库和 API 分别部署在 Cloudflare 的 D1 SQL 数据库和 Worker 上, 然而 D1 数据库并不支持 i18n Dict Extender 项目 中的 .db 格式内的部分内容,所以还需要转换为 .sql 格式并进行清洗。
关于创建 Worker 并链接 D1 数据库请看官方教程,下方仅列出上传数据库的处理步骤:
- 下载原
.db格式的数据库文件,并在 SQLite 官网下载SQLite Tools并解压(此处以 Windows x64 为例)。 - 在 sqlite3.exe(我们只需要它,其他的可以删除)所在位置新建终端,并输入下面的命令转换格式:
sqlite3 Dict-Sqlite.db .dump > input.sql
- 由于 D1 数据库的限制,我们还需要对数据库文件进行进一步的处理。 你可以在 Release 里 下载适用于你的系统的打包好的版本。
Tip
尽量把程序放在和 input.sql 一个目录下,运行结束后会自动删除原文件并生成 Dict-Sqlite.sql 。
注:Linux 和 MacOS 系统记得解压后运行。此工具代码由 AI 生成,作者其实不会 Rust。 它们的源代码在 sql_cleaner 目录下。
- 在本地终端输入
npx wrangler d1 execute prod-d1-tutorial --remote --file=./Dict-Sqlite.sql
其中,请把 prod-d1-tutorial 替换为自己的 D1 数据库名称,./Dict-Sqlite.sql 替换为自己的 SQL 文件路径。
- 在 Cloudflare 网页打开你的 D1 数据库并进入控制台。复制下面的命令并粘贴到对话框,最后点击执行
CREATE VIRTUAL TABLE dict_fts USING fts5( origin_name, trans_name, content='dict', content_rowid='rowid' ); INSERT INTO dict_fts(rowid, origin_name, trans_name) SELECT rowid, origin_name, trans_name FROM dict;
更新数据库方法
浏览器进入存放词典数据的 CloudFlare D1 数据库,点击 Explore Data,并删除除最后一个以外的所有表。之后方法同上。
API 接口文档
本项目后端基于 Cloudflare Worker 和 D1 数据库构建,支持高级全文搜索(FTS5)和结果聚合。
基础信息
- Base URL:
https://api.vmct-cn.top(请替换为你实际部署的地址) - 协议: HTTPS
- 方法: GET
- 缓存策略: 浏览器及边缘节点缓存 7 天
1. 搜索接口 /search
执行关键词搜索,获取翻译结果及关联模组信息。
完整请求示例:https://api.vmct-cn.top/search?q=${query}&page=${currentPage}&mode=${mode}
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| q | String | 是 | - | 搜索词(支持高级语法,详见下方) |
| page | Int | 否 | 1 | 当前页码 |
| mode | String | 否 | en2zh | 搜索模式:en2zh (英查中), zh2en (中查英) |
高级搜索语法
搜索词 q 支持以下逻辑:
- 短语匹配: 使用引号包裹,如
"Iron Ingot"。 - 排除关键词: 使用减号前缀,如
machine -input(搜索包含 machine 但不含 input 的结果)。 - 前缀匹配: 英文末尾加
*,中文默认支持前缀匹配。 - 混合搜索: 支持中英文混合输入。
响应示例
{ "query": "Staff", "results": [ { "trans_name": "法杖", "origin_name": "Staff", "all_mods": "actuallyadditions (1.12.2), cqrepoured (1.12.2), hexcasting (1.18), mysticalagriculture (1.20/1.16/1.21/1.18), roots (1.12.2/1.21), rootsclassic (1.12.2), wizardry (1.12.2/1.12.2)", "all_keys": "booklet.actuallyadditions.chapter.staff.name,item.staff.name,hexcasting.entry.staff,augmentType.mysticalagriculture.staff,item.staff.name|item.roots.staff,item.staff.name,item.wizardry:staff.name|wizardry.book.items_blocks.staff.title", "all_curseforges": "actually-additions,cqrepoured,hexcasting,mystical-agriculture,roots,roots-classic,wizardry-mod", "frequency": 7 } ] }
字段说明
| 字段名 | 说明 |
|---|---|
| total | 匹配到的总条目数(去重后的翻译对数量) |
| results | 结果数组 |
| results.trans_name | 译文名称 |
| results.origin_name | 原文名称 |
| results.all_mods | 出现该翻译的模组及版本列表,多个模组用 , 分隔 |
| results.all_keys | 对应模组的语言文件 Key。若单个模组有多个 Key,内部用 | 分隔,模组间用 , 分隔 |
| results.all_curseforges | 对应模组的 CurseForge 项目 ID |
| results.frequency | 该翻译对在不同模组配置中出现的频次 |
2. 错误码说明
| 状态码 | 说明 | 错误信息示例 |
|---|---|---|
| 400 | 参数错误 | {"error":"查询参数不能为空"} |
| 400 | 参数错误 | {"error": "搜索词长度不能超过50个字符"} |
| 404 | 路径错误 | Not Found |
| 500 | 数据库异常 | {"error": "数据库查询失败", "details": "..."} |
3. 开发注意事项
- 跨域支持 (CORS): API 已默认开启全局跨域限制,允许所有来源访问。
- 速率限制: 前端建议自行实现请求防抖/节流(建议间隔 1000ms),以保护 Worker 免费额度。
- 数据清洗: 后端 SQL 逻辑会自动处理重复的 Key。如果
productivebees在 5 个版本中 Key 相同,all_keys中只会保留一个唯一值。
版权归属
本项目代码部分使用GPL3协议。
本项目数据库来自VM汉化组的i18n Dict Extender项目, 翻译数据归属 CFPA 团队及其他模组译者,该作品采用 CC BY-NC-SA 4.0 授权。