Files
qwerty-learner/docs/toBuildDict.md
2023-04-18 21:09:34 +08:00

124 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何导入新的词典 📚
注意,我们的词典主要来源于社区贡献。当你想要导入新的词典时,最好准备好词典的源文件,以便我们能够更好的帮助你。
## 0. 交给我们!🤝
### 0.1 如果你没有任何编程基础 🚫💻
我们推荐你加入 qwerty learner 社区群,在群中反映你的需求,我们的开发者会帮助你导入词典。
![groupQRcode](../public/weChat-group.jpg)
### 0.2 如果你不会编程,但会使用 github🐙
我们推荐你以“Dictionary Request”为开头发起 Issue描述你的词典需求并提供词典来源。
## 1. 亲自动手!🛠️
### 1.1 词典的目标文件格式 📄
词典的文件格式是 `词典名.json` ,其内容结构应当是:
```json
[
{
"name" : "xxx" ,
"trans" : ["xxx", "xxx",...]
},
...
]
```
例如:
```json
{ "name": "file", "trans": ["n. 档案,公文箱,锉刀,[计算机] 文件 vt. 列队行进,归档,申请"] },
{
"name": "command",
"trans": [
"n.命令,指挥; 司令部,指挥部; [计算机]指令; 控制力 vt.指挥,控制,命令; 命令; 应得,值得 vi.给出命令; 命令,指令 adj.指挥的,根据命令(或要求)而作的"
]
},
{ "name": "use", "trans": ["n. 运用,用法,使用权,适用 vt. 使用,利用,对待 vi. 吸毒"] },
{ "name": "program", "trans": ["n. 节目(单),程序,计划 vt. 规划,拟定计划,制作节目"] },
{ "name": "line", "trans": ["n. 行,线,航线,场界,皱纹,家族 vt. &vi. 用做衬里,排成一行,顺...排列 vi. 排成一行,顺...排列,划线于"] },
{ "name": "if", "trans": ["conj. 如果,是否,即使 n. 条件,设想"] },
```
#### 1.1.0 如何将词典的源文件转换为目标文件格式?🔄
由于词典的源文件格式、来源各异,我们无法为你提供统一的转换方法,但是我们可以提供一些思路:
#### 1.1.1 你可以将部分词典源文件的内容发送给 ChatGPT 并描述需求,让 ChatGPT 生成转换脚本 🤖
#### 1.1.2 你也可以使用在线工具将词典源文件转换为目标文件格式,此类在线工具有很多,如 <https://csvjson.com/csv2json> 🔧
#### 1.1.3 如果内容不多,你也可以手动将词典源文件转换为目标文件格式,或批量交给 ChatGPT 生成 ✍️
#### 1.1.4 如果你卡在了这一步,可以回到 0 部分,交给我们来帮你完成这一步 🔄
### 1.2 词典的目标文件位置 📍
词典的目标文件位置是 `/public/dicts/`,请将处理好的词典文件放置在该目录下
### 1.3 词典的索引建立 🔍
词典的索引建立是在 `/resources/dictionary.ts` 中完成的,你需要在该文件中添加一行代码,格式如下:
```json
{
"id": "xxx",
"name": "xxx",
"description": "xxx",
"category": "xxx",
"url": "./dicts/xxx.json",
"length": xxx
}
```
例如:
```json
{
"id": "cet4",
"name": "CET-4",
"description": "大学英语四级词库",
"category": "英语学习",
"url": "/dicts/CET4_T.json",
"length": 2607,
"language": "en",
},
{
"id": "cet6",
"name": "CET-6",
"description": "大学英语六级词库",
"category": "英语学习",
"url": "/dicts/CET6_T.json",
"length": 2345,
"language": "en",
},
```
其中,
`id` 需要是所有词典中唯一的
`name` 是展示给所有用户的词典名
`description` 是词典描述
`category` 是词典分类(你可以事先阅读所有已存在的词典分类,来为新的词典选择合适的分类)
`url` 是词典的目标文件位置
`length` 是词典的单词数量(可以通过运行脚本 `scripts/update-dict-size.js` 来自动计算)
`language` 表示词典的语言
### 1.4 测试 🧪
使用 yarn 指令安装依赖,然后使用 yarn dev 启动开发服务器,访问 "http://localhost:5173"
如果你的词典已经成功导入,你将在词典列表中看到你的词典。🎉
### 1.5 提交 PR 📝
现在你可以提交 PR 了,我们会尽快 review 你的代码,如果一切顺利,你的词典将会在下一个版本中发布。🎉
## 别忘了,在任何步骤遇到困难时,你都可以转向 qwerty learner 社区寻求帮助。我们是一个非常友好的社区,随时欢迎你的加入!🤝