一个支持多词典的翻译插件(目前仅支持单词)

好的,我再试试 :joy:,谢谢回复

相问下,在窗口已经纵向分割的情况下,调用 fanyi 时能否释义窗口不改变分屏比例同时自动折行

自动折行可以在 fanyi-mode-hook 里加上 visual-line-mode 就好。

不改变分屏比例是指?fanyi 只是使用 pop-to-buffer 来选择使用哪个窗口,不会改变窗口的大小的。

谢谢

不改变比例是指:目前我会用 C-x 3 来分屏,之后 M-x golden-ratio 让右边的小一些,这时在左边阅读如果调用 fanyi-dwim 后,它会出现在右侧的分屏,但同时会变宽(即向左扩张)

有法语词典吗?

这是因为 fanyi 的 buffer 被选中了,而 golden-ratio 是会自动让当前被选中的 buffer 所在的 windows 更宽一点。

(setq fanyi-auto-select nil)

就可以默认让它不自动选择 fanyi 所在的 buffer.

1 个赞

请问,有没有办法在 fanyi-dwim2 的同时调用 longman的美音发音,如果没有则调用海词的

这个没有简便的方法,而且创建的 button 也没有特殊的标记(但是是 overlay),所以只能通过搜索 overlay 来达到。搜索到之后就直接调用 button 上的方法就好了

好的,我原来猜想它的发音网址像搜索引擎一样是个网址,可以作单词替换,然后用mpv命令发音,这样就能在emacs里调用了

是一个网址…

搜索了好久也没学会,发音网址html是这样的

<span data-src-mp3="https://www.ldoceonline.com/media/english/ameProns/contrite.mp3?version=1.2.60" class="speaker amefile fas fa-volume-up hideOnAmp" title="Play American pronunciation of contrite">&nbsp;</span>

请问该怎么 curl 回来 play 呢,谢谢

直接用 mpv, 或者 url-retrieve 之后拿其他不支持 https 的播放器播放

用了 advice,结合了 fanyi.el 和 sdcv:

  (require 'sdcv)
  (defun kimim/sdcv-translate-result-advice (word dictionary-list)
    (let* ((arguments
            (cons word
                  (mapcan
                   (lambda (d) (list "-u" d)) dictionary-list)))
         (result (mapconcat
                  (lambda (result)
                    (let-alist result
                      (format
                       "## %s\n%s\n\n" .dict .definition)))
                  (apply #'sdcv-call-process arguments)
                  "")))
    (if (string-empty-p result)
        sdcv-fail-notify-string
      result)))

  (advice-add 'sdcv-translate-result
              :override
              #'kimim/sdcv-translate-result-advice)

  (defun kimim/fanyi-dwim-add-sdcv (word)
    (let ((buf (get-buffer fanyi-buffer-name)))
    (with-current-buffer buf
      (let ((inhibit-read-only t)
            (inhibit-point-motion-hooks t))
        ;; Clear the previous search result.
        (point-max)
        (insert "# SDCV\n\n")
        (insert
         (sdcv-search-with-dictionary
          word sdcv-dictionary-complete-list))
        (insert "\n\n")
        (beginning-of-buffer)))))

  (advice-add 'fanyi-dwim :after
              #'kimim/fanyi-dwim-add-sdcv)

我认为临时翻译现在完全可以用 AI 来完成,可以很方便地查询某个单词在当前语境下的意思,传统的词典还要自己去找合适的意思

Peek 2023-06-17 12-46

注意 GIF 里同一单词 bank 的查询结果,AI 可以很好的分辨出来。而且你可以通过 prompt 来获得任何你想要的输出形式。

当然正式的时候我更喜欢用 Goldendict 来查词。

是不是得有api才能用?

对,官方的或第三方的都可以

刚才试了一下,在 windows 系统使用 ffplay 最舒服。
mpv 不是不好,但是 win10 之前的系统安装会有链接库错误问题。
先后在 windows 系统上试了 vlc、系统默认播放器以及其他播放器,目前 ffplay 比较理想。

直接下载 FFmpeg 软件包,无需安装
FFmpeg 官网 Download FFmpeg
FFmpeg windows exe 文件下载地址 Builds - CODEX FFMPEG @ gyan.dev
选择下载 release builds 或 git master builds 随意,我下载的是带有 -full.7z 的包。



解压后,直接将 bin 目录加入到用户环境变量 PATH 中即可。

emacs 中我的 fanyi 的设置如下:

(setq fanyi-sound-player "ffplay")

然后就可以非常舒适得使用了。

1 个赞

ol-fanyi.el用emacs master brach编译通不过,疑似是因为org改了org-link-set-parameters的用法,需要把fanyi-org-open-linkfanyi-org-store-linkfanyi-org-complete-link先定义了才能用org-link-set-parameters,不知道为什么这个bug影响到了fanyi-dwim这个命令,一直报function definition is nil :melting_face:

哪个 commit 下的 Emacs 呀?你说的编译是指 byte-compile 还是 native-comp ?

1 个赞

这个是什么词典呢?效果不错