VS Code英汉词典v0.0.8: 批量翻译文件部分命名

简介: 实现VS code插件, 基于本地词典数据, 提供英汉翻译功能, 添加批量命名翻译功能. Improve vscode extension to translate English word or phrase to Chinese, by supporting translating all identifiers in a file.

2019_03_07_vscode_

续前文: VS Code英汉词典进化效果演示: 翻译文件所有命名
2018_12_25_vscode_1

vscode"英汉词典"插件地址: 官方链接

现在实现的效果比之前的演示差很多, 因为executeDocumentSymbolProvider返回的标识符比想象中的少很多. 而且像main这样的常用术语还未进行合适的手工翻译.

提取文件中标识符并翻译的相关部分代码:

  provideTextDocumentContent(uri: vscode.Uri): string | Thenable<string> {
    // TODO: 如果没有当前活跃编辑器, 返回空
    let textEditor = vscode.window.activeTextEditor;
    return vscode.commands.executeCommand<vscode.DocumentSymbol[]>('vscode.executeDocumentSymbolProvider', textEditor.document.uri)
      .then(
        (symbols: Array<vscode.DocumentSymbol>) => {
          for (var 标识符 of symbols) {
            this.原命名列表.push(释义处理.消除英文小括号内容(标识符.name));
            for (var 子标识符 of 标识符.children) {
              this.原命名列表.push(释义处理.消除英文小括号内容(子标识符.name));
            }
          }

          // 长词先查释义, 以免出现一个命名"xxxxyyyy"先替换了yyyy而xxxx未替换的情况
          this.原命名列表.sort(function (a, b) { return b.length - a.length });

          var 新内容 = textEditor.document.getText();
          for (var 原命名 of this.原命名列表) {
            let 中文释义 = 查词.取释义(原命名).释义;
            let 翻译 = 释义处理.取字段中所有词(原命名).length > 1
              ? 中文释义
              : 释义处理.首选(中文释义, 词典常量.词性_计算机);
            if (翻译) {
              新内容 = this._replaceAll(新内容, 原命名, 翻译);
            }
          }
          return 新内容;
        }
      )
  }

-------------- 坑 --------------

之后废了一个小时在这个出现过的这个插件发布才会碰到的问题: Error: Item has already been added. Key in dictionary · Issue #5 · program-in-chinese/vscode_english_chinese_dictionary

初步分析有两个问题:

  • 如果两个中文文件名有同样长度, 比如"查词.ts"和"功用.ts", 在本地打包不会有问题(vsce package), 但是在发布时(vsce publish), 估计服务端在保存到后端时会将这两个文件误识别成重命名.
  • 更隐蔽一点的, 在无数次重命名后发现, 在运行publish时, 它不会清理本地的js输出文件夹(这里是out/). 因此在重命名过程中生成的所有.js文件都仍然存在. 导致这无数次重命名都没有效果.

打算复现并报告第一点这个bug. 对第二点的权宜之计---发布前手动清理out目录!

2018-12-25

相关文章
|
程序员
VSCode变量命名转换插件(Var-Conv)
VSCode变量命名转换插件(Var-Conv)
2227 0
VSCode变量命名转换插件(Var-Conv)
|
C++
VS Code英汉词典进化效果演示: 翻译文件所有命名
实现VS code插件, 基于本地词典数据, 提供英汉翻译功能, 演示批量命名翻译功能. Demonstrate a new feature in vscode extension to translate English word or phrase to Chinese, by supporting translating all identifiers in a file.
966 0
|
JavaScript 测试技术 C++
VS Code英汉词典插件v0.0.4-驼峰下划线命名
实现VS code插件, 基于本地词典数据, 提供英汉翻译功能, 支持驼峰和下划线命名. Add support for Camel case and underscore style naming to the vscode extension to translate English word or phrase to Chinese in source code.
1180 0
|
4月前
sublime和vscode 推荐安装的插件
sublime和vscode 推荐安装的插件
63 0
|
4月前
|
人工智能 自然语言处理 算法
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
231 0
|
4月前
|
敏捷开发 人工智能 前端开发
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录自动一键生成CSS/SCSS/LESS结构,敏捷开发必备插件!!!
|
4月前
|
前端开发
解决适配375像素宽度667像素高度移动端方法:推荐一款非常好用的px转rem单位的VSCode插件px to rem & rpx (cssrem)
解决适配375像素宽度667像素高度移动端方法:推荐一款非常好用的px转rem单位的VSCode插件px to rem & rpx (cssrem)
|
3月前
|
前端开发
VSCode中自带插件Emmet的用法
Emmet 是一个强大的工具,集成在 Visual Studio Code (VSCode) 中,可以大大提高编写 HTML 和 CSS 的效率。以下是如何使用 Emmet 插件的一些基本方法
77 4
|
3月前
|
传感器 前端开发 JavaScript
前端开发者必备的VS Code插件推荐
前端开发者必备的VS Code插件推荐
|
4月前
|
Web App开发 XML 传感器
VSCode 开发Vue必备插件
VSCode 开发Vue必备插件
101 0