嗯嗯,这个可以有。
增加一个配置项指定 sdcv 的目录应该就可以了。
嗯嗯,这个可以有。
增加一个配置项指定 sdcv 的目录应该就可以了。
自带的么?我以为是要单独安装的
懒猫这个安装说明里说是brew install stardict sdcv 但会报错
懒猫说是macos的问题,我以为是解决不了的就放弃了
还有个思路是架个 mdx-server,这样能利用 goldendict 的资源,会丰富和好看不少(远远强于stardict 的词库,包括一些 online 权威字典也有人做)
dictionary-overlay 中的 sdcv 是又一个python 代码,解析 sdcv 格式的词典。
猫哥那个,是一个 Emacs 接口,访问 sdcv 应用。
可以用工具
把其他词典转换成 sdcv 的词典。
暂时不打算支持其他的格式的词典,开发起来会比较复杂。由于 dictionary-overlay 对翻译精度要求不高。
只要有一个数据量稍大一些的词典即可。
谢谢回复,词典我推荐一个,The Little Dict 优点:释义简短但全,按释义占比大小显示(要是支持释义从这些里选择会方便很多,因为常用的在第一个,之后的根据句子选);多种发音可选
呃,直接贴的图有点大。。。
这个词典看起来很高级,mark 一下,说不定以后用得上。
TLD 太花里胡哨了,透析阅读、快速查词我更推荐 ECDICT。
340 万单词,足够用一辈子了。发音词干词性也都有。
大家好像都比较注重于翻译,我更在乎发音,于是折腾了一天的 popweb-dict-youglish.el 。 结果网页widget API 限制只能25(?)个。哭唧唧
edited: 原网页广告和其他元素我能力不够,无法全部去掉,于是转向了它的api, 主要是自定义widget,干干净净。当然似乎是有数量限制的。
哈哈哈,再次说明离线数据的重要性。
youglish的音库是离线换不来的。 具体的说,它的库是youtube,然后人工筛选各种高质量演讲/课堂,一直在更新。
还以为是纯文本的词典,原来是带视频索引的,让我想起了之前的人人词典。这跟 dictionary-overlay 不是一个路数了,哈哈。
学什么英音美音,我觉得要大力弘扬中式口音
环境不允许。要不我学个特色新加坡口音和印度口音。
印度口音挺磨人的,有时候看到印度人的视频我就想搞个 AI 配音替换
popweb 就是直接选择网页, 然后用 css 把那些不要的元素去掉就好了, 为啥要用 API 啊?
发现了一个bug,本地的词典 dictionary.json 加载出了问题。每次重启,都会把本地的词典重置了。
如果是单用,可以说是花哨,不过dictionary-overlay会处理一层的吧
简明英汉也在用 可以看到它很简略,无发音也没有TLD的按释义排序功能 D-O 可以有选择词义的功能,这样的话更适合从中抽取和用户挑选 (当然除了自己处理的,没有完美的词典 D-O有修改释义功能很好)
个人能力有限,去除不干净。我最近在一个网络比较慢的地方,直接api少加载一些图片广告和视频广告会快一些,订了六个月用一下。
自己折腾的效果:上面那个白条去不掉,文字也保留得不完整, 以及,我想保留下边的nearby words,但能力实在不足。
;;; Require
(require 'popweb)
(require 'popweb-dict)
;;; Code:
(defun popweb-dict-youglish-translate (info)
"Lookup INFO in popweb dict window."
(let* ((position (popweb-get-cursor-coordinate))
(window-header-height
(- (nth 1 (window-inside-pixel-edges))
(nth 1 (window-absolute-pixel-edges))))
(x (car position))
(y (- (cdr position) window-header-height))
(x-offset (popweb-get-cursor-x-offset))
(y-offset (popweb-get-cursor-y-offset))
(frame-x (car (frame-position)))
(frame-y (cdr (frame-position)))
(frame-w (frame-outer-width))
(frame-h (frame-outer-height))
(width-scale 0.35)
(height-scale 0.5)
(word (nth 0 info))
(url
(concat
"https://youglish.com/pronounce/" word
"%20%3Ar/english/us")) ; " :r" for random playback order
(js-code
(concat
"window.scrollTo(0, 0); "
"document.getElementsByTagName('html')[0].style.visibility = 'hidden'; " ; ✓
"document.getElementsByTagName('header')[0].style.display = 'none'; " ; ✓
"document.getElementsByClassName('search')[0].style.display = 'none'; " ; ✓
"document.getElementsByClassName('keyword query')[0].style.visibility = 'visible'; " ; ✓
"document.getElementsByClassName('result_container')[0].style.visibility = 'visible'; " ; ✓
"document.getElementsByClassName('g_pr_ad_network')[0].style.display = 'none'; " ; ✓
)))
(popweb-dict-say-word word)
(popweb-call-async
"call_module_method"
popweb-dict-module-path
"pop_translate_window"
(list
"dict_youglish"
x y x-offset y-offset
frame-x frame-y frame-w frame-h
width-scale height-scale
url js-code))
(popweb-dict-youglish-web-window-can-hide)))
;;;###autoload
(defun popweb-dict-youglish-input (&optional word)
"Lookup WORD or user input."
(interactive)
(popweb-start
'popweb-dict-youglish-translate
(list (or word (popweb-dict-prompt-input "Youglish dict: "))))
(add-hook 'post-command-hook
#'popweb-dict-youglish-web-window-hide-after-move))
;;;###autoload
(defun popweb-dict-youglish-pointer ()
"Lookup word at region or at point."
(interactive)
(popweb-dict-youglish-web-window-hide-after-move)
(popweb-start
'popweb-dict-youglish-translate
(list (popweb-dict-region-or-word)))
(add-hook 'post-command-hook
#'popweb-dict-youglish-web-window-hide-after-move))
(defvar popweb-dict-youglish-web-window-visible-p nil)
(defun popweb-dict-youglish-web-window-hide-after-move ()
"Hide popweb dict window after command."
(when (and popweb-dict-youglish-web-window-visible-p
(popweb-epc-live-p popweb-epc-process))
(popweb-call-async "hide_web_window" "dict_youglish")
(setq popweb-dict-youglish-web-window-visible-p nil)
(remove-hook 'post-command-hook
#'popweb-dict-youglish-web-window-hide-after-move)))
(defun popweb-dict-youglish-web-window-can-hide ()
"Hide popweb dict after timer."
(run-with-timer
1 nil
(lambda ()
(setq popweb-dict-youglish-web-window-visible-p t))))
(provide 'popweb-dict-youglish)
;;; popweb-dict-youglish.el ends here
用了官方提供的widget提供的效果:
我看看 zsbd