2018-10-17 Chrome插件实现GitHub代码翻译v0.0.3
续前文浏览器插件实现GitHub代码翻译原型演示, 通过调用浏览器插件-离线英汉词典的批量查词接口, 实现了源码的初步命名直译.
源码库仍在: program-in-chinese/webextension_github_code_translator
还缺失的功能: 驼峰命名法拆分. 比如图中所示, BasicCalculator未翻译.
语言关键词词典.js. 內建词典包括常用关键词, 以及Java和Python的专用关键词:
var 通用关键词 = {
'assert': "断言",
'import': "导入",
"if": "如果",
"else": "否则",
"while": "每当",
"for": "对于",
"in": "在",
"switch": "岔",
"case": "分支",
"break": "跳出",
"continue": "继续",
"return": "返回",
"throw": "抛出",
"finally": "善后",
'class': "类别",
'is': "为"
}
var 专用关键词 = {
/*
参考 http://zetcode.com/lang/python/keywords/
import keyword
print("Python keywords: ", keyword.kwlist)
*/
"python": {
'False': "假",
'None': "空",
'True': "真",
'and': "且",
'as': "as",
'def': "定义",
"del": "删除",
'elif': "否则如果",
'except': "except",
'from': "从",
'global': "全局",
'lambda': "lambda",
'nonlocal': "nonlocal",
'not': "不",
'or': "或",
'pass': "轮空",
'raise': "抛出",
'with': "with",
'yield': "产出"
},
// 参考 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
"java": {
...
}
}
释义处理.js. 查词后, 选取一个"合适"的词义, 这里还很粗糙:
function 首选(中文释义, 所有词性) {
if (!中文释义) {
return;
}
var 首选词义 = "";
var 词性到释义 = 分词性(中文释义, 所有词性);
//console.log(词性到释义);
if (词性到释义[词性_计算机]) {
首选词义 = 词性到释义[词性_计算机][0];
} else {
// 取第一个词性的第一释义
for (var 词性 in 词性到释义) {
首选词义 = 词性到释义[词性][0];
break;
}
}
return 首选词义;
}
主界面.js中进行翻译的主体部分:
function 翻译() {
var 原代码拷贝 = document.getElementsByTagName('table')[0];
var 顶节点 = 原代码拷贝.parentElement;
var 编程语言 = 取编程语言(顶节点);
var span字段列表 = 原代码拷贝.getElementsByTagName('span');
var 文本字段列表 = 取子文本节点(document);
关键词词典 = 取所有关键词(编程语言);
// 合并两个部分
添加所有待查词(span字段列表);
添加所有待查词(文本字段列表);
chrome.runtime.sendMessage(
"ndifefelacmidghjaehmhicbchbidhpe",
命名词典,
function(返回值) {
命名词典 = 返回值.所有释义;
for (var 词 in 命名词典) {
命名词典[词] = 常用命名[词] ? 常用命名[词] : 首选(命名词典[词], 词性);
}
翻译字段列表(span字段列表);
翻译字段列表(文本字段列表);
顶节点.insertBefore(document.createTextNode("编程语言: " + 编程语言), 原代码拷贝);
}
);
}
2018-10-17 Chrome插件实现GitHub代码翻译v0.0.3的更多相关文章
- 2018-10-19 Chrome插件实现GitHub代码离线翻译v0.0.4
续前文Chrome插件实现GitHub代码翻译v0.0.3. 添加了对驼峰命名的支持. 由于调用浏览器插件-离线英汉词典进行词汇翻译, 因此也不依赖于任何在线翻译服务. Chrome插件: 官网链接 ...
- 2018-08-29 浏览器插件实现GitHub代码翻译原型演示
此原型源自此想法: 中文化源码. 考虑到IDE插件工作量较大, 且与IDE绑定. 在代码转换工具的各种实现中, 综合考虑实用+易用+长远改进潜力, 浏览器插件似乎较有优势. 于是用最快捷的方式实现这一 ...
- Dell Technology Summit(2018.10.17)
时间:2018.10.17地点:北京国家会议中心
- octotree-chrome插件,Github代码阅读神器
1.下载octotree-chrome插件 下载地址 2.安装问题 由于新版chrome为了安全,已经不支持像以前一样拖拽插件进行安装,只能从其 Chrome Web Store 下载安装扩展程序. ...
- dream(2018.10.17)
一句话题意:讲什么题意啊,见usaco2017feb silver的T1,一模一样,就是牛和鸡的读入顺序反过来了一下,数据范围大了10倍,卡掉了\(O(n^2)\)的算法. 数据范围: 对于 30%的 ...
- 2018.10.17 NOIP模拟 管道(状压dp)
传送门 状压dp好题. 怎么今天道道题都有点东西啊 对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%% 设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当 ...
- 2018.10.17 NOIP模拟 发电机(概率dp)
传送门 考试空间开大了爆零不然只有30分爆栈? 话说这题真的坑1e7没法写dfsdfsdfs 其实很好推式子. 考虑每个点安一个发动机的概率,推一波式子做个等比数列求和什么的可以证明出来是严格的1si ...
- 2018.10.17校内模拟赛:T2神光
题面:pdf 首先排序,二分,然后怎么判定是否可行. 最简单的思路是,dp[i][j][k],到第i个,用了j次红光,k次绿光,前i个点都选上了,是否可行.然后转移就行. 然后考试的时候就想到这了,往 ...
- icekingdom(2018.10.17)
一句话题意:给你一颗n个点的树,节点初始状态下都是白色,有q次修改,每次修改会把[li,ri]区间内的点染成黑色,并且问黑色点能形成几个联通块,然后会将所有点染回白色.(也就是说每次都只有[li,ri ...
随机推荐
- 使用clipBoard.js进行页面内容复制
官方网址: https://clipboardjs.com/
- Kali学习笔记24:Nikto、Skipfish
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器IP:192.168.163. ...
- os模块及其API&属性
模块: os os.path 所包含API列表: os.uname: 获取详细的系统信息 os.rename: 文件重命名 os.remove: 删掉文件 os.mkdir: 创建一个目录 os.rm ...
- Python 游戏之旅(Pygame)
Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.基于这样一个设想,所有需要的游戏功能和理念 ...
- .Net #if DEBUG调试模式代码使用
#if DEBUG Console.WriteLine("DEBUG:11111111111"); #else Console.WriteLine(" ...
- freemarker常见语法大全,灰常有用!
由于公司前端使用的技术是freemarker,于是没事就在网上看看别人写的关于freemarker的文章,感觉freemarker灰常简单,比jsp好用,jsp太乱太臃肿了,另外推荐大家看看freem ...
- 基于阿里云 DNS API 实现的 DDNS 工具
0.简要介绍 0.1 思路说明 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能.工具核心就是调用了阿 ...
- NuGet 构建服务器与常用命令
公司出于某些原因需要自己在内部网络搭建一个私有的 Nuget 服务器,而且要运行在 Linux服务器上面.如果说 Windows 下搭建的话很简单,直接在项目当中引入 Nuget 的库就 OK,这儿的 ...
- centos7系统配置记录SFTP操作日志
1.修改ssh配置 [root@elk-node2 ~]# vim /etc/ssh/sshd_config 大概132行把下面这个句注释掉 #Subsystem sftp /usr ...
- 谷歌浏览器提示Adobe flash player不是最新版本的解决方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 参考资料 https://jingyan.baidu.com/article/a3a3f811c3d5058da2eb8a39.html 如果电脑 ...