linux Emacs利用有道API翻译
来源:互联网 发布:网络投影机 编辑:程序博客网 时间:2024/06/11 10:02
懒得找星际译王的词库, 不过Emacs没有翻译功能怎么行呢?利用有道的api实现一个简单的在线的。选中词后按组合键Ctrl-c f。
1. 首先先到有道的api申请页面申请一个key,随便写点,不过邮件要准确,因为会把key和keyfrom发到你的邮箱的。然后利用得到的key和夫keyfrom替换一下:
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1
注:有三种方式调用api:json,jsonp,xml,这边我用的是xml.
2.到emacs wiki下面找到这个xmlparser加入到你的emacs中,因为要用这个库解析获取到的xml结果.
http://emacswiki.org/emacs/XmlParser
注:我是这样放的:我把xml.el和xml-parse.el文件放在~/.emacs.d/config/目录下面,下面的代码也是新建一个el文件放进去的。在~/.emacs中加入下面的代码:
(add-to-list 'load-path "~/elisp-sites" "~/.emacs.d/config")(mapc 'load (directory-files "~/.emacs.d/config" t "^[a-zA-Z0-9].*.el$"))
3. 将下面的代码加入到~/.emacs文件中,或者可以和我一样。
;获取要翻译的词典(defun get-current-word () (interactive) (let ((begin (point-min)) (end (point-max))) (save-excursion (when (not mark-active) (backward-word) (mark-word)) (setq begin (region-beginning) end (region-end))) (buffer-substring begin end)));;抓取翻译结果(defun get-translate-result (word) (shell-command-to-string (concat (format "curl 'http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=xml&version=1.1&q=%s' 2>/dev/null" word))));;分析翻译结果,并返回显示字符串(defun analytic-translate-result (translateresult) (let* ((root (with-temp-buffer (insert translateresult) (xml-parse-region (point-min) (point-max)))) (youdao-fanyi (car root)) (basic (car (xml-get-children youdao-fanyi 'basic))) (explains-ex (xml-get-children (car (xml-get-children basic 'explains)) 'ex)) (phonetic-texts (car (xml-node-children (car (xml-get-children basic 'phonetic))))) (explains-texts (concat "音标:" phonetic-texts "\n"))) (loop for ex in explains-ex do (setq explains-texts (concat explains-texts (car (xml-node-children ex)) "\n"))) explains-texts));;主函数(defun lookup-word () (interactive) (let* ((word (get-current-word)) (translate-result (get-translate-result word)) (explains-texts (analytic-translate-result translate-result))) (tooltip-show explains-texts)));;绑定到Ctrl-c f组合键上(global-set-key (kbd "C-c f") 'lookup-word)
注意:抓取翻译的结果代码中的url要加上你的key和keyfrom,重启一下emacs。
结果就像这样:
- linux Emacs利用有道API翻译
- 利用有道API进行翻译
- 利用有道翻译Api实现英文翻译功能
- 有道翻译API
- 有道翻译API 海词API
- Java 调用 有道翻译API
- 有道翻译API+Jackson+HttpClient
- [ios开发]利用有道翻译API实现简单的翻译功能
- [ios开发]利用有道翻译API实现简单的翻译功能
- [ios开发]利用有道翻译API实现简单的翻译功能
- 网络翻译-利用有道接口
- Asp.NET调用有道翻译API
- Asp.NET调用有道翻译API
- 【3】python有道调用API进行翻译
- java api模拟登录有道翻译
- 谷歌和有道翻译API使用
- python使用有道翻译api请求
- 【Service】使用有道翻译API构建翻译服务
- JQuery, ajax处理json数据
- 使用工厂方法和Unity实现IoC注入
- 技术工程师-搬迁
- spring配置(web项目)
- 字符串KMP算法
- linux Emacs利用有道API翻译
- 技术工程师-去做技术
- C语言中#和##的用法
- 技术工程师-实施(一)
- MySQL Cluster 详细配置文件(config.ini)
- Object类相关的属性,方法和操作符
- 关于Transfer-Encoding: chunked类型的数据的解析
- 货币格式处理,Java,
- 编程修养