ginqi7
223
由于令人沮丧的原因,我使用 google 翻译越来越不稳定。
为了尽可能少的进行网络查询。我计划在 mac 平台下支持,直接从mac 词典中获取翻译。
使用 python objectC 接口,可以很容易的调用 mac 词典来查词。
import CoreServices
translation_msg = CoreServices.DCSCopyTextDefinition(None, word, (0, len(word)))
mac 词典接口返回的是一个字符串。
我选择了比较粗糙的正则表达式来处理:匹配出所有的中文字符串。
因此就可以得到一个翻译列表
默认在overlay 展示第一个单词就行。
修改翻译时,展示列表中的所有翻译(虽然最后可能包含一些例句的翻译)
re_chinese_words = re.compile("[\u4e00-\u9fa5]+")
return re.findall(re_chinese_words, translation_msg)
mac 词典接口的一个好处是复数或者时态导致的变形可以直接通过本地查询。猜测是内部查询时进行了词干提取。
默认的翻译顺序是:
- 使用本地dictionary.txt 文件中保存的上一次的翻译
- 使用 sdcv 来进行翻译
- 使用 macOS 词典进行翻译
- 使用网络词典翻译
然后新增一个变量可以替换顺序
3 个赞
终于支持离线优先了。
是不是也能不强制依赖 websocket-bridge 了呀?
ginqi7
225
那不行 websocket-bridge 是为了emacs 和 python 交互的。
期待,mac上安不了sdcv也不知如何禁用,能用本地的最佳;保存翻译是个好主意,这样修改释义就能存下来
ginqi7
229
sdcv 是 dictionary-overlay 自带的,应该不会出现不能用的情况吧?你是指网络翻译吗?
现在已经保存了。理论上修改的解释是会保存下次展示的。
内置的sdcv字典有点少,能不能做个配置选项,可以更换sdcv词库的?内置词库优先可以大概率降低googletrans不可用的问题。
谢谢
ginqi7
231
嗯嗯,这个可以有。
增加一个配置项指定 sdcv 的目录应该就可以了。
自带的么?我以为是要单独安装的
懒猫这个安装说明里说是brew install stardict sdcv
但会报错
懒猫说是macos的问题,我以为是解决不了的就放弃了
还有个思路是架个 mdx-server,这样能利用 goldendict 的资源,会丰富和好看不少(远远强于stardict 的词库,包括一些 online 权威字典也有人做)
ginqi7
234
dictionary-overlay 中的 sdcv 是又一个python 代码,解析 sdcv 格式的词典。
猫哥那个,是一个 Emacs 接口,访问 sdcv 应用。
1 个赞
ginqi7
235
可以用工具
把其他词典转换成 sdcv 的词典。
暂时不打算支持其他的格式的词典,开发起来会比较复杂。由于 dictionary-overlay 对翻译精度要求不高。
只要有一个数据量稍大一些的词典即可。
谢谢回复,词典我推荐一个,The Little Dict
优点:释义简短但全,按释义占比大小显示(要是支持释义从这些里选择会方便很多,因为常用的在第一个,之后的根据句子选);多种发音可选
呃,直接贴的图有点大。。。
ginqi7
237
这个词典看起来很高级,mark 一下,说不定以后用得上。
TLD 太花里胡哨了,透析阅读、快速查词我更推荐 ECDICT。
340 万单词,足够用一辈子了。发音词干词性也都有。
zqso
239
大家好像都比较注重于翻译,我更在乎发音,于是折腾了一天的 popweb-dict-youglish.el 。
结果网页widget API 限制只能25(?)个。哭唧唧
edited: 原网页广告和其他元素我能力不够,无法全部去掉,于是转向了它的api, 主要是自定义widget,干干净净。当然似乎是有数量限制的。
zqso
241
youglish的音库是离线换不来的。
具体的说,它的库是youtube,然后人工筛选各种高质量演讲/课堂,一直在更新。
还以为是纯文本的词典,原来是带视频索引的,让我想起了之前的人人词典。这跟 dictionary-overlay 不是一个路数了,哈哈。
学什么英音美音,我觉得要大力弘扬中式口音