需求背景
相比之前,当前可选的词典软件越来越多了,论坛里就有好多:GoldenDict-ng、DictTango、OpenMDict、MDictRust 等等
但有个需求好像依然没有得到满足,估计词典重度爱好者大都存在这个需求:
- 收集的词典有点多,版本也有点复杂,要达到理想的配置状态,不容易。
- 如果要部署的设备多起来,且跨不同平台,windows、Mac、Linux,甚至手机、平板等更多类型的设备,那么维护起来就是个灾难。
如果可以部署在服务器上,只要维护一个设备,其他设备都可以远程访问,那就完美了!
社区讨论
我注意到已经有不少讨论:
- Run a WEB Service on localhost, other software can send HTTP request to query words · Issue #618 · goldendict/goldendict · GitHub
- [to do ] add an embed http server in goldendict · Issue #229 · xiaoyifang/goldendict-ng · GitHub
- 宣传一下自己写的基于 web 技术的词典软件
- 搭建词典服务器的教程
将词典“网络化/服务器化” 的主要路线
- 后端 Server 化 + 前端网页访问(或客户端调用),代表项目:
- SilverDict (Rust 编写): GitHub - Crissium/SilverDict: Web-Based Alternative to GoldenDict · GitHub
- mdict-rs (Rust 编写): GitHub - zhimoe/mdict-rs: a web mdict app base on rust acitx, use mdx dict file · GitHub
- mdx-server (Python 编写): GitHub - ninja33/mdx-server: a service to read mdx/mdd file and provide http interface · GitHub
- SMB/NFS 局域网挂载 + 本地 GoldenDict 等直接读取,优势是延续你最习惯的本地 GoldenDict 的完整体验(如分组、快捷键、划词、各种精美排版、本地发音库等)。
- 其他极客方案,典型代表如 https://tio.freemdict.com/ ,gemini 猜测它的可能机制:并不是在网页端去实时解压和读取原始的 .mdx 文件,而是预先将大量的词典、古籍数据彻底解包,导入到高效的专业搜索引擎数据库(如 Elasticsearch, Meilisearch 或 Mili 等)或关系型数据库中,并建立了极其强大的全文索引。前端则用 Go、Node.js 或 Python 写一个精美的 Web 界面提供多词典联合检索。特点是查询速度快,支持强大的“全文检索”,这个方案适合公开的、面向大众的网络词典服务,但对于个人而言,折腾搜索引擎的要求和成本极高。
- GoldenDict-NG 多年前曾提出过 [to do ] add an embed http server in goldendict · Issue #229 · xiaoyifang/goldendict-ng · GitHub 但并未真正推进的“词典服务器/集群”方案。gemini点评:GoldenDict-NG 骨子里是一个极度依赖本地系统的桌面客户端(使用 C++ 和 Qt 框架)。它的核心逻辑是:直接用底层 C++ 代码操作本地文件指针去 Seek 磁盘上的 mdx 数据。要让它把这套复杂的底层“扫盘、寻址、解压、缓存”逻辑重构为“客户端不存数据,全部走网络远程 RPC/API 调用”,相当于要把整个软件的底层数据引擎全部重写。开发者们把精力放在了“怎么让本地查词更爽、更现代化”,而把“网络化”的刚需抛给了生态。
探索体验
个人偏好上述第1种,最成熟的要数 Crissium/SilverDict。然而,表面看起来一切完美,若真的部署体验一下,发现它对现有词典的兼容性还有很长的路要走,而我们的词典有那么多,一个个改造不太现实。
- 相关讨论:宣传一下自己写的基于 web 技术的词典软件 - #73,来自 Vim
大家有什么好的解决方案,欢迎讨论。
