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.

VS Code英汉词典插件v0.0.7-尝试词性搭配, 下一个功能打算实现文件的批量命名翻译: 批量代码汉化工具 · Issue #86 · program-in-chinese/overview

功能仍未完成. 下面仅为效果演示之用. 并未实际调用英汉词典数据:
2018_12_16_vscode____

相关源码

新建编辑器内容提供者:

'use strict';

import * as vscode from 'vscode';

export default class Provider implements vscode.TextDocumentContentProvider{

    static scheme = 'references';
    private _演示字典: Map<String, String> = new Map([
        ["BasicCalculator", "基本的计算器"],
        ["Calculator", "计算器类"],
        ["calculator", "计算器"],
        ["add", "加"],
        ["subtract", "減"],
        ["multiply", "乘"],
        ["divide", "除"],
        ["first", "第一"],
        ["second", "第二"],
        ["number", "数"],
        ["divisor", "被除数"]
    ]);

    dispose() {
    }

    provideTextDocumentContent(uri: vscode.Uri): string | Thenable<string> {
        var 新内容 = vscode.window.activeTextEditor.document.getText();
        for (var 原命名 of this._演示字典.keys()) {
          新内容 = this._replaceAll(新内容, 原命名, this._演示字典.get(原命名));
        }
        return 新内容;
    }

    private _replaceAll(str, find, replace) {
    return str.replace(new RegExp(find, 'g'), replace);
  }
}

let seq = 0;

export function encodeLocation(uri: vscode.Uri, pos: vscode.Position): vscode.Uri {
    const query = JSON.stringify([uri.toString(), pos.line, pos.character]);
    return vscode.Uri.parse(`${Provider.scheme}:test.java?${query}#${seq++}`);
}

添加并列编辑器("状态框"为现有功能):

    const provider = new ContentProvider();

    const providerRegistrations = Disposable.from(
        workspace.registerTextDocumentContentProvider(ContentProvider.scheme, provider)
    );

    const commandRegistration = commands.registerTextEditorCommand('editor.翻译标识符', editor => {
        const uri = encodeLocation(editor.document.uri, editor.selection.active);
        return workspace.openTextDocument(uri).then(doc => window.showTextDocument(doc, editor.viewColumn + 1));
    });

    const 状态框 = window.createStatusBarItem(StatusBarAlignment.Right, 100);
    状态框.command = 'extension.翻译选中文本';
    context.subscriptions.push(
        provider,
        commandRegistration,
        providerRegistrations,
        状态框
    );

发现问题

似乎vscode对中文命名的高亮有些问题:
2018_12_16_vscode_

对比英文命名的高亮:
2018_12_16_vscode_


尴尬的彩蛋:

VS Code 英汉词典进化效果演示: 翻译文件所有命名 - V2EX指出, "演示字典"部分有个错误: divisor是"除数". 当然, 本身英汉词典数据是正确的(如下). 功能实现之后应该不会有此问题:
2018_12_16_vscode_divisor

2018-12-16

相关文章
|
6月前
|
前端开发
【HTML专栏2】VSCode的使用(新建HTML文件)
【HTML专栏2】VSCode的使用(新建HTML文件)
520 0
|
6月前
vscode点击通过import引入方法名或模块名跳转其定义的文件
window点击ctrl(MAC点击command)+通过import引入的文件、方法等到,跳转到其定义的页面
440 0
|
3月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
3月前
|
开发工具
如何修改Vscode查看源代码管理版本变动文件的查看方式
这篇文章介绍了如何在VSCode中通过源代码管理插件修改查看源代码版本变动文件的方式,提供了树形视图和列表视图两种查看方法,并说明了如何通过设置选项来切换查看方式,帮助用户根据自己的喜好更高效地查看和管理代码变动。
如何修改Vscode查看源代码管理版本变动文件的查看方式
|
3月前
|
Windows
Windows——如何在文件资源管理器地址栏快速打开Vscode
Windows——如何在文件资源管理器地址栏快速打开Vscode
84 4
|
3月前
|
存储 Java 开发工具
【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)
|
4月前
|
前端开发 JavaScript 开发工具
vscode教程(含使用技巧、保存时自动格式化文件等设置)
vscode教程(含使用技巧、保存时自动格式化文件等设置)
341 0
|
5月前
|
JavaScript
VScode格式化vue文件--避免html属性换行
VScode格式化vue文件--避免html属性换行
890 0
|
6月前
|
Windows
vscode 终端无法执行npm、cnpm命令的解决办法,npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试
vscode 终端无法执行npm、cnpm命令的解决办法,npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试
1636 0
|
6月前
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题