要做的效果如下, 就是一个翻译功能~

需要准备百度翻译开发者账号,取得 appid 和密钥

npm install -g yo generator-code

关键 vscodeAPI获取当前活动编辑器选中的文字vscode.window.activeTextEditor.document.getText(range?: Range)调用快速选择面板vscode.window.showQuickPick(items: string[] | Thenable, options?: QuickPickOptions)

开始 CODING

脚手架创建文件夹代码yo code

选择 JavaScript(Extension), 后面全部按 Enter 默认就行。

百度翻译 API 代码

创建translate-api.js文件

这里需要知道如何获取用户配置,毕竟同一个 appid 和密钥调用次数有限。需要以下步骤。注册贡献点在 vscode 中,菜单、命令、视图等等一切需要在用户面前展示的功能都需要在 package.json 中注册贡献点

贡献配置项如下"contributes": {

"configuration": [

{

"title": "translateNamed",

"properties": {

"translate.appid": {

"type": "string",

"default": "20200921000570318",

"description": "百度翻译API-appid"

},

"translate.secret": {

"type": "string",

"default": "8iaGzb7v0225xQ8SVxqq",

"description": "百度翻译API-密钥"

}

}

}

]

},找到用户配置

ok, 注册贡献点后,就能通过 API 找到刚刚注册的配置项啦vscode.workspace.getConfiguration().get((section: string))调用 API

我习惯使用axios所以yarn add axios md5了, 其中md5是百度翻译 API 所需要的。

OK, 以下是translate-api.js的代码。const axios = require("axios")

const vscode = require("vscode")

const md5 = require("md5")

const appid = vscode.workspace.getConfiguration().get("translate.appid")

const secret = vscode.workspace.getConfiguration().get("translate.secret")

module.exports = {

/**

* 翻译方法

* @param {string} q 查询字符串

* @param {string} from 源语言

* @param {string} to 目标语言

* @returns {{data: {trans_result:[{src: string, dst: string}]}}} Promise翻译结果

*/

translate(q, from, to) {

var salt = Math.random()

return axios({

method: "get",

url: "https://fanyi-api.baidu.com/api/trans/vip/translate",

params: {

q,

appid,

from,

to,

salt,

sign: md5(appid + q + salt + secret),

},

})

},

}如果需要替换成其他翻译 API,如:google 翻译 只需要更改此translate-api.js代码就好了。

操作 vscode

回到extension.js中。

第一步, 我们需要找到当前编辑器选中的文本。const currentEditor = vscode.window.activeTextEditor

const currentSelect = currentEditor.document.getText(currentEditor.selection)

其中currentEditor.document.getText方法需要的是Range,但是由于selection继承于Range可以直接把currentEditor.selection放入参数中。

第二步 分割单词。

翻译出来的单词一般是空格隔开的, 所以用空格分割即可。const list = result.split(" ")

const arr = []

// - 号连接

arr.push(list.map((v) => v.toLocaleLowerCase()).join("-"))

// 下划线连接

arr.push(list.map((v) => v.toLocaleLowerCase()).join("_"))

// 大驼峰

arr.push(list.map((v) => v.charAt(0).toLocaleUpperCase() + v.slice(1)).join(""))

// 小驼峰

arr.push(

list

.map((v, i) => {

if (i !== 0) {

return v.charAt(0).toLocaleUpperCase() + v.slice(1)

}

return v.toLocaleLowerCase()

})

.join("")

)

第三步 将结果放入快速选择面板中。let selectWord = await vscode.window.showQuickPick(arr, {

placeHolder: "请选择要替换的变量名",

})

第四步 将选择的结果替换选中的文本if (selectWord) {

currentEditor.edit((editBuilder) => {

editBuilder.replace(currentEditor.selection, selectWord)

})

}

查看全部代码可以到 github:github

入口文件就是extension.js

为了更方便,注册菜单

为了更方便,注册菜单贡献点。"menus": {

"editor/context": [

{

"when": "editorHasSelection",

"command": "translate.zntoen",

"group": "navigation"

}

]

}

其中,

when是指什么时候出现菜单选项, editorHasSelection是指存在编辑器有选中文本时。查看 when 还有那些可用选项?vscode when 贡献点 文档

command是指点击菜单时需要执行的命令

group是指菜单放置的地方, 查看 group 还有那些可用的选项?vscode group 文档

添加图标

在 package.json 中配置"icon": "images/icon.png",

其中 images/icon.png 是 128*128 像素的图片。

添加 git 仓库,修改 readme 等

如果不添加 git 仓库,发布的时候会有警告。

如果不修改 readme, 将无法发布!

创建账号 token

首先你必须先得创建一个微软账号, 创建完毕后打开如下链接

https://aka.ms/SignupAzureDevOps

右上角点击用户设置-> Personal access tokens

根据提示new token

选择范围的时候,这样选择

登录vsce create-publisher your-publisher-name

发布vsce publish

插件地址: https://marketplace.visualstudio.com/items?itemName=chendm.translate&ssr=false#overview

vscode搜索translateNamed, 即可体验。

github查看代码: https://github.com/chendonming/translate

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[vscode系列: 做个五脏俱全的翻译插件]http://www.zyiz.net/tech/detail-147328.html

html翻译插件,vscode系列: 做个五脏俱全的翻译插件相关推荐

  1. ChromeFK插件推荐系列二十五:在线石墨插件推荐

    本次分享几个在线RSS订阅插件推荐,内容来自: chromefk.希望对你有所帮助. 1.[CHROMEFK]石墨快捷面板 一款新标签页美化应用,同时也是石墨文档的快捷面板. https://www. ...

  2. vscode beautify sass 格式化_最强编辑器 VSCode 系列之插件推荐【不定期更新】

    [TOC] 前言 emsp;如果你还不知道这款最强编辑器的话,查看本站热门文章,最强编辑器 VSCode 系列之入门简介. 通用 无论你用什么语言,都会用得到的插件. Project Manager ...

  3. vscode html注释快捷键_最强编辑器 VSCode 系列之插件推荐【不定期更新】

    [TOC] 前言 emsp;如果你还不知道这款最强编辑器的话,查看本站热门文章,最强编辑器 VSCode 系列之入门简介. 通用 无论你用什么语言,都会用得到的插件. Project Manager ...

  4. IDEA插件系列(18):Translation插件——翻译插件

    0. 目录 1. 插件介绍 2. 安装方式 3. 使用方法 3.1 翻译单词 3.2 替换单词 3.3 翻译图标 3.4 翻译设置 1. 插件介绍 可以翻译词汇.语句,十分方便. 2. 安装方式 第一 ...

  5. 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  6. 【深入浅出MyBatis系列八】SQL自动生成插件

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  7. VSCode刚安装后可以安装这些插件提高开发效率

    场景 Visual Studio Code (简称 VSCode / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代码片 ...

  8. lass翻译_【专题讲座】政务翻译人才培训系列讲座(1)

    12月4日,笔译队邀请苏州大学杜争鸣教授为笔译队做政务翻译人才培训讲座第一讲.在此次讲座中,杜争鸣老师以<自然英语学习法>为蓝本,介绍了自然英语学习法.作为系列讲座的第一讲,杜老师选择先不 ...

  9. Natasha 4.0 探索之路系列(二) 「域」与插件

    域与ALC 在 Natasha 发布之后有不少小伙伴跑过来问域相关的问题,能不能兼容 AppDomain.如何使用 AppDomain.为什么 CoreAPI 阉割了 AppDomain 等一系列的问 ...

最新文章

  1. administrator自动登录桌面
  2. 运维测试工作笔记0001---单台普通8G内存的服务器-可以达到的http并发量
  3. 走进R语言的世界——简单数据处理
  4. JavaScript函数实例(一)
  5. 高数——八种求极限方法总结
  6. TMR 传感器的原理及应用
  7. Mac连接win10打印机
  8. 14周 上 购物案列
  9. 编译原理-递归子程序法
  10. js中的生成器函数Generator
  11. 安徽师大附中%你赛day9 T3 贵 解题报告
  12. SAP QM检验批常见问题及解决办法
  13. 我们吵的百分之九十的架都是同一个原因
  14. 安卓音乐播放器app开发(一)---功能分析及启动页的制作
  15. Labview从入门到会用(一)——创建数据文件
  16. Obsidian 常用插件
  17. 地产巨头,数据一体化建设项目方案(拿走不谢)
  18. 成本控制包括如下内容:
  19. 小米8无法识别sim卡-临时修复
  20. visual editor ve1.5下载

热门文章

  1. matlab学位论文出图
  2. STM32驱动MPU6050基于IIC协议
  3. Django搭建个人博客Blog-Day05
  4. 2022-04-26 linux文件系统解读
  5. 记录一下自己写的小工具:shell 调度 SQL 批处理,递归查找调度路径
  6. 视频文件格式转换怎么操作?如何进行视频文件格式转换?
  7. 学Linux 学什么 ?
  8. 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(三)
  9. js前台提示:参数不规范,请检查json的格式和参数对应的类型是否正确
  10. 如何去理解虚拟机的概念?