SublimeText3 插件开发记录 --- 划词翻译

最近正研究怎么使用SublimeText3开发Python,然而对Python英文文档的阅读是一个比较头疼的问题,在AndroidStudio中有自动翻译插件ECTranslation,能方便的翻译单词和句子。因此想仿照ECTranslation,自己写一个翻译插件,正好也能加深对Python的印象。(在SublimeText3中,似乎没有特别好用的划词翻译插件)

开发ST3的插件,大致上是以下几个步骤:

1. 搭框架

SublimeText的Tool菜单下选New Plugin ,将会新建一份.py模版文件,将其保存到Package目录下,插件主体就弄好了。如果需要添加到右键菜单、窗口菜单、快捷键,只需要定义相应的文件即可。这里,划词翻译需要快捷键支持,所以还需在当前目录下新建sublime-keymap 文件(注意这个文件的文件名,支持什么系统就在括号中书写,而且Default 和系统名之间的空格不能省略)。目录结构如下:
这里写图片描述

2. 编写代码

SublimeText3 API中写明了ST3公开的接口,其实ST3的插件就是一个Command,其中分为 ApplicationCommand、TextCommand、WindowCommand。可以根据需要继承不同的Command类实现不同的功能,这里需要获取选中的文本然后翻译,所以插件继承TexCommand。而后在run方法中书写插件要完成的动作即可。划词插件的动作很简单:
1. 得到鼠标选择的文本。
2. 发送到百度翻译API(不够准确,以后可以用有道API替换)。
3. 解析翻译结果,弹窗显示。
具体的代码如下:

import threading
import random
import hashlib
import json
from urllib import request, parse

import sublime
import sublime_plugin

appid = '20170101000035055'
secretKey = '42I1a2L4KencJQ6vraSD'
targetUrl = 'https://fanyi-api.baidu.com/api/trans/vip/translate'

'''
根据百度翻译API文档书写的方法,因为ST3插件似乎并不支持第三方框架,所以网络请求使用urllib
'''
def getTranslationFromBaidu(src):
    q = src
    salt = random.randint(32768, 65536)
    sign = appid + q + str(salt) + secretKey
    md5Value = hashlib.md5()
    md5Value.update(sign.encode('utf-8'))
    sign = md5Value.hexdigest()

    postData = {
        'appid': appid,
        'q': q,
        'sign': sign,
        'salt': salt,
        'from': 'auto',
        'to': 'zh'
    }

    postDataEncode = parse.urlencode(postData)
    f = request.urlopen(targetUrl, data=postDataEncode.encode())
    data = f.read()
    jsonResultString = data.decode('utf-8')
    jsonResult = json.loads(jsonResultString)

    trans_result = jsonResult['trans_result']
    # 得到翻译文本
    dst = trans_result[0]['dst']
    return dst

#插件主类
class translateCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        for s in self.view.sel():
            if s.empty() or s.size() <= 1:
                break
            # 只处理第一个Region,其它忽略
            str = self.view.substr(s)
            print(str)
            # 查询单词
            t = NewThread(
                getTranslationFromBaidu, (str,))
            t.start()
            t.join()

            # 得到翻译结果 弹窗显示
            resultString = t.getResult()
            self.view.show_popup(
                resultString, sublime.HIDE_ON_MOUSE_MOVE_AWAY, -1, 600, 500)
            break

#辅助线程
class NewThread(threading.Thread):
    def __init__(self, func, args, name=''):
        threading.Thread.__init__(self)
        self.name = name
        self.func = func
        self.args = args

    def getResult(self):
        return self.res

    def run(self):
        self.res = self.func(*self.args)

这里的Region就是指一个文本段,而根据API文档,self.view.sel()可以返回所有鼠标选择的文本段。而对于按住ctrl键选择了多个文本,这里只翻译选择的第一个文本。

3. 快捷键绑定

若还需绑定快捷键、菜单等,只需要建立相应文件。本插件的快捷键映射文件只有一行代码:
[ { “keys”: [“ctrl+t”],”command”: “translate”}]

项目地址 (https://github.com/HYY-yu/SublimeText3Plugin-TranslateAuto)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Sublime Text 3常用插件安装方法如下: 1. 打开Sublime Text 3,点击菜单栏中的“Preferences”(偏好设置)选项,然后选择“Package Control”(插件控制器)。 2. 在弹出的窗口中,选择“Install Package”(安装插件)选项。 3. 在搜索框中输入你想要安装的插件名称,然后点击搜索按钮。 4. 在搜索结果中选择你想要安装的插件,然后点击安装按钮。 5. 安装完成后,你可以在Sublime Text 3的菜单栏中找到新安装的插件,并使用它们来提高你的编程效率。 常用的Sublime Text 3插件包括:Emmet、SublimeLinter、Git、MarkdownEditing、ColorPicker等。 ### 回答2: Sublime Text 3 是一款非常流行的文本编辑器,它的可扩展性和自定义性非常强,提供了许多强大的插件功能,可以满足不同开发者的需求。在这里,我们将会介绍如何在 Sublime Text 3 中安装常用的插件。 首先,我们需要使用 Package Control 这个插件来管理 Sublime Text 3 的插件。如果你还没有安装 Package Control 插件,可以按照以下步骤进行安装: 1. 打开 Sublime Text 3 2. 按下 Ctrl + ` 或者点击 View -> Show Console 打开控制台 3. 复制以下代码粘贴到控制台中并回车: ``` import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) ``` 4. 安装完成后,重新启动 Sublime Text 3 接下来,我们可以通过 Package Control 来搜索并安装常用的插件。在 Sublime Text 3 中使用 Package Control 的步骤如下: 1. 按下 Ctrl + Shift + P 或者点击 Preferences -> Package Control 打开 Package Control 菜单 2. 输入 Install Package 并回车,等待 Package Control 进行加载 3. 输入你想要搜索的插件名称并回车,例如 Emmet、SublimeLinter、AutoFileName 等 完成插件安装后,我们可以在 Sublime Text 3 中启用或者禁用这些插件。以 Emmet 插件为例,启用步骤如下: 1. 按下 Ctrl + Shift + P 或者点击 Preferences -> Package Settings -> Emmet -> Settings 从 Package Settings 菜单中打开 Emmet 配置文件 2. 将 "disable": true 修改为 "disable": false 保存配置文件并关闭 通过以上步骤,我们可以轻松安装和启用常用的插件,并为 Sublime Text 3 带来更强大的功能。 ### 回答3: Sublime Text3是一款通用文本编辑器,它提供了大量的插件来增强其功能。下面将介绍一些SublimeText3 常用插件的安装方法和简单的使用介绍。 1. Package Control Package Control是Sublime Text3 中非常流行的插件管理工具。使用它可以方便的安装和升级其他插件。要安装Package Control,请到该官网的页面上下载安装包。下载后,选中Sublime Text3中的视图(View)选项,点击Show Console,复制下面代码并回车: import urllib.request,os,hashlib; h = 'df21e130daba809182b4173efeb9c6ba' + '8d5e9aaf621d60aec8026aeda' + 'e880f7d0b6eda156f9214d8b' + 'ce53b7bfb922dddf699981808' + '848e8ca7d8d40e'.upper(); pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) 复制完成后,就可以开始使用Package Control了。 2. Emmet Emmet是一个为HTML、CSS、XML和XSL代码编写提供快速缩写的插件。在Sublime Text3中输入HTML片段时,可以使用Emmet自动扩展。要安装Emmet,请在Package Control中查找Emmet,然后点击Install进行安装。 3. Sublime Linter Sublime Linter是一款用于检查代码错误的插件。它使用多种语言检测器(例如JSHint,JSXHint,ESLint)检查代码,查找错误和警告。要安装Sublime Linter,请在Package Control中查找Sublime Linter,并点击Install进行安装。 4. Side Bar Enhancements Side Bar Enhancements是一款增强Sublime Text侧边栏功能的插件。使用它可以添加更多右键菜单选项,包括打开文件夹、将文件夹添加到项目中、打开终端、重命名、删除等。要安装Side Bar Enhancements,请在Package Control中查找Side Bar Enhancements,并点击Install进行安装。 总之,Sublime Text3插件的安装非常简单,使用插件可以使Sublime Text3的功能得到极大的扩展。以上只是介绍了一些常用的插件,还有很多其他的插件也值得一试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值