/english-teacher.el

Primary LanguageEmacs LispMIT LicenseMIT

当你在阅读英文文档时,English Teacher 可以像英语老师一样给你关心和关爱,手把手给你翻译英文句子。

English Teacher 支持 youdao,bing,baidu,google,tencent 后端, 你也可以自己添加后端。

默认使用 youdao 翻译,如果你需要使用其他翻译后端

(setq english-teacher-backend 'baidu) ; 'youdao bing google baidu

use-package 设置

(use-package english-teacher
  :load-path "english-teacher-path" ;; NOTE: here type english teacher directory
  :hook ((Info-mode
          elfeed-show-mode
          eww-mode
          Man-mode
          Woman-Mode) . english-teacher-follow-mode))

命令

  • english-teacher-choose-backend 选择后端。
  • english-teacher-next-backend 切到下一个后端, 建议绑定一个方便的快捷键,如果一个翻译不准确,可以迅速切换到另一个后端。
  • english-teacher-smart-translation 智能翻译,当光标处于字符串或者注释里面,会优先翻译字符串或注释,否则就翻译当前句子。

自定义后端

实现 english-teacher-translate 这个多态方法, 这个方法接受要翻译的文本, 返回值的格式为 (cons result origin)

;;;###autoload
(cl-defmethod english-teacher-translate ((text  t) (backend (eql english-teacher-backend-youdao)))
  (english-teacher-backend-youdao-request "AUTO" "AUTO" text))

随后添加你的后端到 english-teacher-backends-alist

(add-to-list english-teacher-backends-alist 'your-backend)

用 eldoc 显示翻译结果

(setq english-teacher-show-result-function 'english-teacher-eldoc-show-result-function)

自定义显示方式

;;;###autoload
(defun english-teacher-eldoc-show-result-function (origin translation)
  (eldoc-message (format "%s:%s"
                         (symbol-name english-teacher-backend)
                         translation)))

(setq english-teacher-show-result-function 'english-teacher-eldoc-show-result-function)