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

相关文章
|
3月前
|
自然语言处理 IDE 前端开发
5个可保存的在线代码片段平台推荐-变成自己的代码词典库
5个可保存的在线代码片段平台推荐-变成自己的代码词典库
47 0
|
18天前
|
API Python
可以将文本按照每一批5000个字符进行分割,然后依次调用批量翻译接口进行翻译
可以将文本按照每一批5000个字符进行分割,然后依次调用批量翻译接口进行翻译
13 1
|
2月前
|
存储
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
47 0
|
5月前
|
数据可视化
新建论文三线表模板,一键格式刷(包含word和latex版本)
新建论文三线表模板,一键格式刷(包含word和latex版本)
210 0
|
8月前
|
前端开发 JavaScript 测试技术
前端国际化辅助工具——自动替换中文并翻译
前端国际化辅助工具——自动替换中文并翻译
441 0
|
10月前
【Endnote】Word插入自定义形式的Endnote文献格式
【Endnote】Word插入自定义形式的Endnote文献格式
66 0
|
10月前
|
API
利用abbrevr包批量输出期刊缩写
有时候用endnote导入文献后显示的是期刊全称,而用到缩写时候就需要去一些网站上一个个搜索,比如CASSI, LetPub、Pubumed等网站,或者Y叔公号里直接回复,而逛Github时候突然发现abbrevr这小R包中可以很快批量实现这个需求,在此记录一下。
62 2
文献管理软件EndNote引用格式的自定义修改
本文对EndNote软件修改论文参考文献引用格式的界面与各选项参数加以详细介绍~
471 1
文献管理软件EndNote引用格式的自定义修改
|
索引 Python
【VBA脚本】提取word文档中所有批注的信息和待解决状态
【VBA脚本】提取word文档中所有批注的信息和待解决状态
174 0
【VBA脚本】提取word文档中所有批注的信息和待解决状态
|
前端开发 开发工具 C++
#私藏项目实操分享# 【Vs code工作记录一】如何将英文的vs code工具变成中文
#私藏项目实操分享# 【Vs code工作记录一】如何将英文的vs code工具变成中文
90 0
#私藏项目实操分享# 【Vs code工作记录一】如何将英文的vs code工具变成中文