Emacs Emacs 翻译插件

liiker · 发布于 2017年12月26日 · 53 次阅读
Resize,w 96,h 96,m fill
本帖已被设为精华帖!

调用有道翻译的接口在Emacs中直接进行单词翻译,在使用的过程中将API中的YOUR-KEY 替换成你自己申请的Key, 详情参考 --> 有道翻译API

;; 发送http get 请求
(defun get-url (url)
  "send http get request"
  (with-current-buffer (url-retrieve-synchronously url) (buffer-string)))

;; 获取翻译数据
(defun get-translate-info (word)
  "translate word and get original data"
  (decode-coding-string (get-url (format "http://fanyi.youdao.com/openapi.do?keyfrom=emacs-fanyi&key=YOUR-KEY&type=data&doctype=json&version=1.1&q=%s" word)) 'utf-8))

;; 调用有道翻译
(defun translate (word)
  "translate word and get explains"
  (let (me-data pos-json json-str info)
    (setq me-data (get-translate-info word))
    (setq pos-json (string-match-p "{.*}" me-data))
    (setq json-str (substring me-data pos-json))
    (setq info (json-read-from-string json-str))
    (print (assoc 'explains (assoc 'basic info)))))

;; 查询输入单词
(defun translate-new ()
  "input translate world"
  (interactive)
  (let ((word (read-string "要查询的单词:")))
    (translate word)))

;; 查询当前光标下的单词
(defun translate-on-cursor()
  "translate on cursor"
  (interactive)
  (translate (current-word)))

;; 绑定翻译快捷键
(global-set-key
 (kbd "C-c t n") 'translate-new)

;; 绑定翻译快捷键
(global-set-key
 (kbd "C-c t t") 'translate-on-cursor)
共收到 0 条回复
Resize,w 32,h 32,m fill liiker 关闭了讨论 12月26日 09:39
Resize,w 32,h 32,m fill liiker 重新开启了讨论 12月28日 20:56
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册