GitHub - Wulian233/mcmod-translation-dict: 最好的Minecraft中文模组翻译对照词典 (original) (raw)

MC模组翻译参考词典

关于本项目

本项目旨在解决两个核心问题:

一方面,为了适应 CFPA 团队翻译数据的持续更新扩充, 同时应对原MC百科数据更新缓慢、页面使用不便的现状, 我们以MC百科版功能和页面为参照开发了开源网页版本,不仅完整保留原有功能,还新增了中英互查、暗色模式、移动端适配、加强版数据库等增强特性;

另一方面,针对部分热门 Minecraft 模组(如机械动力)的简体中文翻译由开发者直接维护(而非通过CFPA社区协作), 导致 CFPA 官方维护的MC百科模组词典(数据源为 i18n-dict)存在更新滞后或内容缺失的问题。 本项目通过使用加强版的数据库,有效弥补了这一缺口。

欢迎各路大佬高手为本项目提出建议和意见,或参与贡献!

功能特色

技术细节

我们建议开发者搭建属于自己的 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 数据库请看官方教程,下方仅列出上传数据库的处理步骤:

  1. 下载原 .db 格式的数据库文件,并在 SQLite 官网下载SQLite Tools并解压(此处以 Windows x64 为例)。
  2. 在 sqlite3.exe(我们只需要它,其他的可以删除)所在位置新建终端,并输入下面的命令转换格式:

sqlite3 Dict-Sqlite.db .dump > input.sql

  1. 由于 D1 数据库的限制,我们还需要对数据库文件进行进一步的处理。 你可以在 Release 里 下载适用于你的系统的打包好的版本。

Tip

尽量把程序放在和 input.sql 一个目录下,运行结束后会自动删除原文件并生成 Dict-Sqlite.sql

注:Linux 和 MacOS 系统记得解压后运行。此工具代码由 AI 生成,作者其实不会 Rust。 它们的源代码在 sql_cleaner 目录下。

  1. 在本地终端输入

npx wrangler d1 execute prod-d1-tutorial --remote --file=./Dict-Sqlite.sql

其中,请把 prod-d1-tutorial 替换为自己的 D1 数据库名称,./Dict-Sqlite.sql 替换为自己的 SQL 文件路径。

  1. 在 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)和结果聚合。

基础信息

执行关键词搜索,获取翻译结果及关联模组信息。

完整请求示例:https://api.vmct-cn.top/search?q=${query}&page=${currentPage}&mode=${mode}

请求参数

参数名 类型 必填 默认值 说明
q String - 搜索词(支持高级语法,详见下方)
page Int 1 当前页码
mode String en2zh 搜索模式:en2zh (英查中), zh2en (中查英)

高级搜索语法

搜索词 q 支持以下逻辑:

响应示例

{ "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. 开发注意事项

  1. 跨域支持 (CORS): API 已默认开启全局跨域限制,允许所有来源访问。
  2. 速率限制: 前端建议自行实现请求防抖/节流(建议间隔 1000ms),以保护 Worker 免费额度。
  3. 数据清洗: 后端 SQL 逻辑会自动处理重复的 Key。如果 productivebees 在 5 个版本中 Key 相同,all_keys 中只会保留一个唯一值。

版权归属

本项目代码部分使用GPL3协议GitHub license

本项目数据库来自VM汉化组的i18n Dict Extender项目, 翻译数据归属 CFPA 团队及其他模组译者,该作品采用 CC BY-NC-SA 4.0 授权。