先放 GitHub 链接:
以及 demo (在不要钱的 Okteto 容器里,慢得要死,完全不能代表实际效果):
正文:
没想到这里这么多开发者,连 goldendict-ng 的作者都在,我也来宣传一下自己写的词典软件。
SilverDict 目前支持 MDict, StarDict, DSL 三种,Babylon 考虑支持,但这格式实在太难读了。后端是一个 Flask 服务器,核心部分是一个我自己写的 Flask 扩展,可以读取词典内容并输出 well-formatted HTML, 通过多线程和 SQLite 等种种技术确保速度非常可观;前端用的是 React, 页面非常简洁,该有的功能都有,比如:
- 词典分组,每组设置一些语言,可以进行拼写检查和词形分析(比如 walks → walk)
- 查询忽略音符(输入 etudier 可以查到 étudier)以及连字 ligature (
soeur → sœur 记错了,œ 不行,德语的 ß 才行)(GoldenDict 没有这个功能的),忽略大小写,忽略空格、连词符,忽略简繁词条
- 简繁转换
- 自动扫描添加指定目录中的词典
- 点击查询解释中的词
- 多媒体支持良好
- 超链接支持
- 搜索历史
- 由于采用 client-server 架构,可以把服务端部署到自己服务器上,或者放到路由器上,家里人都能用
- Geeks 可以试试用 w3m
- Python 和 web app 天然跨平台
功能太多了,我自己都想不起来了,总之是 as expected, 欢迎尝试,欢迎 fork, 欢迎 star ;)
补充:
可以用 Termux 运行在手机里,但这就比较 geeky 了。
有人说无法下载,我放飞书云文档里了:
https://nankai.feishu.cn/drive/folder/L43mfggw0l4HLFdBePScUtrbnjb
写给程序员:
- 有没有人有 Arm Mac 呀?据说 OpenCC 在上面没法用?如果乐意的话,可以像 Windows 一样打包一个完整的 Python 运行环境,然后邮件发给我,或者我给你 GitHub 编辑权限,省得不懂技术的 Mac 用户折腾了。
- React 怎么写 nested dialogue? 现在的实现有问题,没有 overflow: scroll 词典太多会溢出到界面以外,有了的话词典太少时内层显示不全。
- 前端目前是英文的,总共没几个词,但还是可能会给用户带来麻烦,希望有本地化经验的同仁 fork 一下,加个靠谱本地化库,然后把字符串都翻译一下。Crowdin 和 Weblate 似乎对开源项目免费?
写给懂俄语的:
可以帮忙到一些俄语论坛宣传一下吗?我的大部分词典都是从各种 Russian sources 搜刮来的,大头是个古老的 torrent, 给蔑视法律的俄罗斯汉子竖个大拇指 咱也得回馈一下人家。
24 个赞
完全可以的。后端只提供了一堆 API, 完全可以再用 React 写个扩展。之前写过 API 文档,在 GitHub 的 Wiki 下面,可以去看看,但有一段时间没更新了。
另外,其实不用目前的 web app 也是可以的,直接用 w3m http://localhost:2628/api/query/Default%20Group/word 就行,浏览器扩展必然也是一个道理。
补充一点,目前只有 GitHub 里面这个 React web app, 但我正在开发一个 Flutter app, 并且有计划开发 C++/Qt 桌面应用,命令行界面和浏览器扩展等等我个人不需要,如果哪位愿意开发这两个,欢迎回复告知我,我会尽可能帮忙。
3 个赞
感谢楼主的作品,这个的简繁转换我没太看懂,麻烦楼主赐教。
是需要安装opencc后,将 zh
添加到包含中文词典的组中,然后preferences.yaml中设置chinese_preference:cn。就可以实现输入 一个简体汉字 也能查到对应的 繁体汉字的词典中的内容吗
如果仅仅是为了简查繁/繁查简,标记组的语言为 zh 即可,如果需要转换正文内容,需要修改 preferences.yaml 的 chinese_preference
字段为 cn
(大陆简体,e.g. 意大利)/ tw
(台湾正体,e.g. 义大利),此处故意写错字,以示这不只是字形转换,是整个表达的本地化。
不从源“编译”不需要用 node, 从 release 下载一个现成的就行了,自己只需要有 Python.
我自己用的十来个 MDict 词典是毫无问题的。我试着查了一下“教”字,也就是 Readme 里一个截了图的词条,得到的原始数据如下,跟你的结果很像:
`50`教`26`㈠`40``60`攴`62`7`63`11`80`ㄐㄧㄠˋ`81`jiào`42``15`動`6`①`1`訓誨、誘導。`14`如:「教導」、「教誨」。`1``16`《孟子・離婁上》:「古者易子而教之。」`2``6`②`1`使、讓。`16`唐・金昌緒〈春怨〉詩:「打起黃鶯兒,莫教枝上啼。」`1``16`宋・周邦彥〈玉樓春・當時攜手〉詞:「帳裡不教春夢到。」`2``20`名`6`①`1`禮儀、規矩。`16`《孟子・滕文公上》:「飽食暖衣,逸居而無教,則近於禽獸。」`1``16`《禮記・王制》:「脩其教,不易其俗。」`2``6`②`1`宗教的簡稱。`14`如:「佛教」、「基督教」。`2``6`③`1`姓。如明代有教輔直。`2``44``52`教`26`㈡`41``60`攴`62`7`63`11`80`ㄐㄧㄠ`81`jiāo`42``15`動`4`傳授。`14`如:「教唱」。`1``16`《左傳・襄公三十一年》:「教其不知,而恤其不足。」`1``16`唐・柳宗元〈六逆論〉:「教於後世,莫知其所以去就。」`2`
这看起来并不是 HTML, 其他的 MDict 词典其实都是一堆 HTML 文章通过极其复杂的方式合到一个 .mdx 文件中。那些前引号之间的数字看起来像是一种特殊的格式?
用别的 MDict 软件是什么效果?如果有现成的文档或者例子,我试着支持一下。
1 个赞
amob
17
compact html,mdict自创的。就是用数字代替标签,目前而言其实没什么用。
2 个赞
如果大佬可以对这种“紧凑格式”有支持就太棒啦,最近在找无版权免费使用的词典,但找到的好几本都用的这个
如果 gd-ng 支持,那我就直接找找抄了,之前抄过不少代码了。这两天正在大翻新,顺手把这个也实现了。
另外我没加 hk ↔ cn, 因为我感觉 hk tw 绝大多数情况下是一样的吧。
1 个赞