大多数人对于不同语言的翻译功能基本需求如下:

  1. 翻译文本阅读
  2. 单词读音/音频
  3. 输入文本翻译
  4. 阅读电子书

大多数人是如何使用这几种翻译的方式呢?

  1. 翻译文本阅读

    将需要翻译的文本复制到 翻译工具/软件 中, 这过程需要切换不同的软件, 非常繁琐.

  2. 单词读音/音频

    将需要翻译的单词复制到 翻译工具/软件, 并点击播放音频.

  3. 输入文本翻译

    将需要翻译的文本复制到 翻译工具/软件 进行翻译, 然后再将翻译结果复制.

  4. 阅读电子书

    • 将电子书翻译

      缺点是翻译结果比较生硬, 不如一个一个单词翻译准确.

    • 将电子书的翻译单词复制到 翻译工具/软件 进行翻译.

在这些 翻译需求中, 尤其以 输入翻译 和 播放单词音频 在不同 翻译工具/软件 难以达到理想状态.

在下面我将介绍如何使用 Emacs 快速/高效/一体化 进行以上 翻译需求

Emacs 能将以上翻译需求 速率更快/效率更高

我将要使用 Emacs 的两个包实现将这些功能:

你应该需要学会这两个包的使用…

关于如何使用这两个包, 这是我的配置, 你将这些代码放到 init.el 中即可:

(use-package google-translate
  :ensure t
  :bind (("C-c fy" . google-translate-smooth-translate)
         ("C-c fi" . freedom-translate-text-from-minibuffer)
         ("C-c fr" . freedom-translate-replace))
  :init
  (setq google-translate-default-source-language "auto"
        google-translate-default-target-language "zh-CN"
        google-translate-translation-directions-alist
        '(("en" . "zh-CN") ("zh-CN" . "en")))
  (freedom-add-to-context-menu ["Translate text"       (google-translate-at-point)])
  (freedom-add-to-context-menu ["Translate paragraphs" (google-translate-paragraphs-overlay)])
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; 自建, 依赖 google-translate
  (defun freedom-translate-text-from-minibuffer ()
    "Entered text is automatically translated into English."
    (interactive)
    (require 'google-translate-core-ui)
    ;; (add-hook 'minibuffer-setup-hook 'toggle-input-method)
    ;; Enter translation text and translate
    (setq freedom-translate-txt (read-from-minibuffer "zh-CN > En: "))
    (google-translate-translate "zh-CN" "en" freedom-translate-txt 'echo-area)
    ;; Remove hook
    ;; (remove-hook 'minibuffer-setup-hook 'toggle-input-method)
    ;; Fill in the translated text
    (insert google-translate-result-translation)
    )
  (defun freedom-translate-replace (beg end)
    "Translate and replace selected text with the result from Google Translate.
The user can choose the translation direction via the minibuffer."
    (interactive "r")
    (let ((selected-text (buffer-substring-no-properties beg end))
          (translation-direction (completing-read "Choose translation direction: "
                                                  '("zh-CN >> en" "en >> zh-CN"))))
      ;; Delete selected text
      (delete-region beg end)
      ;; Make sure translation functionality is introduced
      (require 'google-translate-core-ui)
      ;; Call the translation function according to the translation direction selected by the user
      (cond
       ((string-equal translation-direction "zh-CN >> en")
        (google-translate-translate "zh-CN" "en" selected-text 'echo-area)
        (insert google-translate-result-translation))
       ((string-equal translation-direction "en >> zh-CN")
        (google-translate-translate "en" "zh-CN" selected-text 'echo-area)
        (insert google-translate-result-translation)))
      ))
  )
(use-package dict-line
  :ensure t
  :vc (:url "https://github.com/ISouthRain/dict-line")
  :diminish
  (dict-line-mode "🗺️")
  :ensure nil
  :defer 2
  :custom
  (dict-line-audio t)
  (dict-line-audio-root-dir "F:/Your/pronunciations/")
  (dict-line-dict-directory "~/.emacs.d/Your/dict/")
  (dict-line-dict-personal-file "~/.emacs.d/Your/dict/Mydict.ts")
  (dict-line-display #'dict-line--posframe)
  (dict-line-idle-time 1)
  :config
  (dict-line-mode t)
  )

1. 翻译文本阅读

这个需要借用 M-x google-translate-smooth-translate 或者 C-c fy

M-x 代表按键 Alt + x, C-c fy 代表按键 Ctrl + c fy

效果:

2. 单词读音/音频/翻译

这我们需要使用 dict-line 这个包, 你只需要开启 dict-line-mode , 然后将光标放到 单词 就会 自动翻译&播放单词音频

效果:

3. 转换输入翻译内容

这需要 M-x freedom-translate-text-from-minibuffer 或者 C-c fi

效果如下:

4. 阅读电子书

要在 Emacs 阅读电子书(.epub), 需要安装: nov.el: Major mode for reading EPUBs in Emacs

(use-package nov
  :ensure t
  :mode ("\\.epub\\'" . nov-mode)
  :custom
  (nov-save-place-file "~/.emacs.d/Your/nov-places")
  :init
  (add-hook 'nov-mode-hook 'visual-line-mode)
  (setq nov-text-width t)
  (setq visual-fill-column-center-text t)
  (setq nov-temp-dir "~/.emacs.d/temp/nov");; 无效
  )

之后就可以使用 Emacs 打开 电子书(.epub) 文件, 在 Emacs 阅读了.

效果:

直至, 有关 Emacs 翻译告一段落.

我个人 Emacs 阅读电子书/翻译/记笔记/捕获 一体化

这是我的 Emacs 有关 Emacs 阅读电子书/翻译/记笔记/捕获 一体化.

我借用 org-capture && nov && 翻译 在 Emacs 阅读电子书/翻译/记笔记/捕获 一体化效果:

后面我会写一篇有关我个人如何在 Emacs 高效阅读电子书 && 翻译 && 捕获笔记 && 记录阅读笔记 的文章.

敬请期待.

最后: 如果本文章帮到了你, 你可以请我喝杯 咖啡 !!

请我喝咖啡, 谢谢你!