哈哈哈,我太兴奋了,以至于必须再单独发一帖。
首先是在 Keyboard Maestro 实现了一个 macro 按两次 Option+T 将外语翻译为中文,或将中文翻译为英文。
Emacs 必须不能落后!
功能
按两次 H-t
,如果光标所在段落中没有中文字符,将段落翻译为中文,如果段落中有中文字符,将段落翻译为英文。
使用临时文件和系统剪切板作为数据交换。
不只是中英互译哦,个人笔记不方便展示,就用 KM 展示一下能力吧:
依赖
下载并安装两个快捷指令:Translate File 和 Translate File 2 English
Emacs 设置
;; Siri Shortcuts: Translate
;; {{{
(add-to-list 'display-buffer-alist
(cons
"\\*Async Shell Command\\*.*"
(cons #'display-buffer-no-window nil)))
(defun my/siri-translate ()
(interactive)
(let
((tempfile
(make-temp-file "siri-translate-" nil ".txt")
))
(write-region
(format "%s" (thing-at-point 'paragraph))
nil
tempfile)
(end-of-paragraph-text) ; jump to end of paragraph
(shell-command (format "shortcuts run \"Translate File\" -i %s &" tempfile))
)
(shell-command "open -b org.gnu.Emacs")
)
;; (keymap-global-set "C-c C-t" #'my/siri-translate)
(defun my/siri-translate2english ()
(interactive)
(let
((tempfile
(make-temp-file "siri-translate-" nil ".txt")
))
(write-region
(format "%s" (thing-at-point 'paragraph))
nil
tempfile)
(end-of-paragraph-text) ; jump to end of paragraph
(shell-command (format "shortcuts run \"Translate File 2 English\" -i %s &" tempfile))
)
(shell-command "open -b org.gnu.Emacs")
)
;; (keymap-global-set "C-c C-e" #'my/siri-translate2english)
(defun language-to-zh-or-zh-to-english ()
(interactive) ;; 测试
(let ((string (thing-at-point 'paragraph)))
(if (eq (string-match "\\cC" string) nil)
(my/siri-translate)
(my/siri-translate2english)
)
)
)
(keymap-global-set "H-t H-t" #'language-to-zh-or-zh-to-english)
;; }}}
效果
这是 Emacs scratch buffer
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with <open> and enter text in its buffer.
按两下 H-t 得到
;;此缓冲区用于未保存的文本和Lisp评估。;;要创建文件,请使用<open>访问它,并在其缓冲区中输入文本。
在翻译后的文本上再按两下 H-t 得到
;;This buffer is used for unsaved text and Lisp evaluation. ;;To create a file, please use <open> to access it and enter text in its buffer.
碎碎念
我的 H
是设置为了右 Command
(setq mac-right-command-modifier 'hyper )
写 elisp 真舒服啊,就像在造一棵树,把枝桠安排好就自动长好了。
Sexp is so sexy!
Keyboard Maestro 和 Alfred Workflow 我用了几年还是一知半解很少自己动手写,Emacs Lisp 让我体会到了当年 RMS 忽悠办公室文员说写 elisp 不算编程的话好像也不是很不可思议。我真的一个 elisp 教程都没看下去,大部分时间是看别人的代码和查 Emacs 内的文档。
离线使用
如果打开了 macOS 的【系统设置-通用-语言和地区-翻译语言…-设备端模式】就可以离线使用了。