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 ...
随机推荐
- 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...
- Spark基础-scala学习(二、面向对象)
面向对象编程之类 //定义一个简单的类 scala> :paste // Entering paste mode (ctrl-D to finish) //类默认public的 class He ...
- Redis 设计与实现 (一)--数据结构
底层数据结构:动态字符串.字典.整数集合.双端链表.压缩列表 字符串对象: int 浮点数值 raw 字符串值>32字节 embstr 字符串值<32字节 字符串编码转换: i ...
- MyBatis 延迟加载的三种加载方式深入,你get了吗?
延迟加载 延迟加载对主对象都是直接加载,只有对关联对象是延迟加载. 延迟加载可以减轻数据库的压力, 延迟加载不可是一条SQL查询多表信息,这样构不成延迟加载,会形成直接加载. 延迟加载分为三种类型: ...
- python zeros用法实例
编程就是踩坑的过程.今天又踩了一个坑,做个积累吧. 在给数组赋初始值的时候,经常会用到0数组,而Python中,我们使用zero()函数来实现.在默认的情况下,zeros创建的数组元素类型是浮点型的, ...
- Python爬虫目录
Python爬虫目录 工具使用 Pycharm 连接Linux 远程开发 mongodb在windows下安装启动 爬虫抓包工具Fiddle设置 爬虫抓包工具Charles设置 爬虫工具fiddle在 ...
- [django]date类型和datetime类型过滤
搞清楚datetime.datetime和datetime.date模块 他们两个的格式区别 datetime模块 In [1]: from datetime import datetime In [ ...
- 08 训练Tensorflow下围棋
这里介绍一下开源项目Mugo,它基于Tensorflow,可以使用sgf的棋谱训练围棋机器人,跟你下围棋,这里直接给出本人修改完善好的项目,只介绍一下用法. 链接:http://pan.baidu.c ...
- Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局
传统弹性伸缩的困境 弹性伸缩是Kubernetes中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划与实 ...
- MySQL 高性能优化实战总结
1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 ...