2018-10-31 在线代码离线翻译Chrome插件"一马"v0.0.8

续前文: Chrome插件实现GitHub代码离线翻译v0.0.4

添加了对"码云"在线代码的翻译支持, 因此改名暂为"一马". 在此贴中调研了常用的在线代码网站: 各位都在什么源码站上在线看代码? - V2EX, 暂未发现其他.

注: 此插件调用浏览器插件-离线英汉词典 0.0.7进行查词, 因此也不依赖任何在线翻译服务, 不存在API调用限制.

改进功能:

  • 支持"码云"代码翻译
  • 添加 C/PHP 关键词的翻译
  • 删除释义中的括号内内容

"码云"的代码段与GitHub的HTML结构略有不同, 暂时分别处理如下:

function 获取代码段() {
  var 当前域名 = window.location.host;
  // 默认, 适用于GitHub
  var 代码段节点 = document.body.getElementsByTagName('table')[0];

  if (当前域名 == "gitee.com") {
    代码段节点 = document.body.getElementsByClassName('code')[0]
  }

  // GitHub: 父节点的class包含编程语言信息, 如class="blob-wrapper data type-python "
  return [代码段节点.parentElement.outerHTML];
}

function 翻译() {
  // TODO: 避免与`获取代码段()`重复
  var 编程语言 = "";
  var 原代码拷贝 = document.body.getElementsByClassName('code');
  var 顶节点 = null;
  if (原代码拷贝.length == 0) {
    原代码拷贝 = document.getElementsByTagName('table')[0];
    顶节点 = 原代码拷贝.parentElement;
    编程语言 = 取编程语言(顶节点);
  } else {
    添加CSS("https://gitee.com/assets/application-e5df8140372297eda15f23497886ffdb.css");
    原代码拷贝 = 原代码拷贝[0];
  }
...
}

大幅增加了通用关键词的手工翻译, 以覆盖尽可能多的编程语言:

// TODO: 并非所有编程语言都有. 会影响命名翻译.
var 通用关键词 = {
  "abstract": "抽象",
  "and": "且",
  "as": "as",
  "assert": "断言",
  "break": "跳出",
  "boolean": "布尔",
  "byte": "字节",
  "char": "字节",
  "const": "const",
  "case": "分支",
  "class": "类别",
  "catch": "接住",
  "continue": "继续",
  "default": "默认",
  "do": "执行",
  "double": "双浮点",
  "else": "否则",
  "enum": "枚举",
  "extends": "扩展",
  "extern": "外部",
  "false": "假",
  "final": "最终",
  "finally": "善后",
  "float": "单浮点",
  "for": "对于",
  "function": "函数",
  "global": "全局",
  "goto": "goto",
  "if": "如果",
  "implements": "实现",
  "import": "导入",
  "in": "在",
  "include": "包括",
  "instanceof": "为实例",
  "int": "整数",
  "interface": "接口",
  "is": "为",
  "long": "长整数",
  "native": "native",
  "new": "新",
  "null": "空",
  "or": "或",
  "package": "包",
  "private": "私有",
  "protected": "保护",
  "public": "公有",
  "return": "返回",
  "short": "短整数",
  "signed": "有符号",
  "sizeof": "大小",
  "static": "静态",
  "struct": "结构",
  "super": "父类",
  "switch": "岔",
  "synchronized": "同步",
  "this": "本身",
  "throw": "抛出",
  "throws": "会抛出",
  "transient": "transient",
  "true": "真",
  "try": "尝试",
  "typedef": "类型定义",
  "union": "联合",
  "unsigned": "无符号",
  "void": "无值",
  "volatile": "volatile",
  "while": "每当",
  "with": "with",
  "yield": "产出"
}

var 专用关键词 = {
  // https://msdn.microsoft.com/en-us/library/befeaky0.aspx
  "c": {
    "auto": "auto",
    "register": "register"
  },
  // http://php.net/manual/en/reserved.keywords.php
  "php": {
    // array()
    "callable": "可调用",
    "clone": "克隆",
    "const": "const",
    "declare": "声明",
    // die()
    "echo": "回响",
    "elseif": "否则如果",
    // empty()
    "enddeclare": "结束声明",
    "endfor": "结束for",
    "endforeach": "结束foreach",
    "endif": "结束if",
    "endswitch": "结束switch",
    "endwhile": "结束while",
    // eval()
    // exit()
    "foreach": "对每个",
    "implements": "实现",
    "include_once": "包括_单次",
    "instanceof": "为实例",
    "insteadof": "insteadof",
    "interface": "接口",
    // isset()
    // list()
    "namespace": "命名空间",
    "print": "打印",
    "require": "需要",
    "require": "需要_单次",
    "trait": "trait",
    // unset()
    "use": "use",
    "var": "var",
    "xor": "异或"
  },
  "javascript": {
    "arguments": "参数",
    "await": "等待",
    "debugger": "调试器",
    "delete": "删除",
    "eval": "eval",
    "export": "导出",
    "let": "让",
    "typeof": "为类型",
    "var": "变量"
  },
  /*
  参考 http://zetcode.com/lang/python/keywords/
  import keyword
  print("Python keywords: ", keyword.kwlist)
  */
  "python": {
    "False": "假",
    "None": "空",
    "True": "真",
    "def": "定义",
    "del": "删除",
    "elif": "否则如果",
    "except": "except",
    "from": "从",
    "lambda": "lambda",
    "nonlocal": "nonlocal",
    "not": "不",
    "pass": "轮空",
    "raise": "抛出",
  },
  // 参考 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
  "java": {
    "strictfp": "strictfp"
  }
}

Chrome插件商店

下个版本打算改进的(11/02/2018: 在0.0.11版中已基本完成):

原文地址:https://www.cnblogs.com/program-in-chinese/p/10504065.html

时间: 2024-11-04 01:08:29

2018-10-31 在线代码离线翻译Chrome插件"一马"v0.0.8的相关文章

it's time to change myself now (2018.10.31)

自16年从新屋熊职校毕业,入职深圳某厂从事云存储两年半了.两年半的时间很快,快的感觉一生都会飞快,两年多一直很忙,忙的几乎忘了自己是否正向改变过. 正向改变,or 积极改变,今年十一回家,与几个好友小聚,开怀畅聊,聊了过去与未来:突然觉得,在公司在岗位上,自己停止不前浑然不知,抽身之后,方被自己的状态震惊到. 从这几个方面: 工作:cs出身,从事云存储,美且名曰分布式存储,而我接触到的业务,非分布式,非传统存储,仅仅是对kv存储以lun或者说卷的管理这个层面.那么问题来了,这个层面究竟有多高的价

2018-10-19 Chrome插件实现GitHub代码离线翻译v0.0.4

续前文Chrome插件实现GitHub代码翻译v0.0.3. 添加了对驼峰命名的支持. 由于调用浏览器插件-离线英汉词典进行词汇翻译, 因此也不依赖于任何在线翻译服务. Chrome插件: 官网链接 支持所有编程语言 因为并不需要对源代码进行语法分析(之前Java源码英翻中进展-内测上线中使用了语法分析, 工作量大很多), 因此原则上已经支持所有编程语言的源代码. 但对一些编程语言效果更好, 见下面效果. Java: 源码来源 Python: 源码来源 C: 源码来源 接下去添加C的关键词翻译后

如何离线安装chrome插件

前言------可以不看: 实习做web,要弄单点登录SSO和验证Controller接口是否成功返回数据,要装两个chrome插件(Postman和JsonView),来发送Post请求测试单点登录(因为url只能是get请求). 以前做C++,写IOS,写Qt的娃,现在搞web真的有点虚,真是苦逼,一大堆货. google都不能访问了,google的应用商店也明显不能访问了.我又懒得找翻墙软件,真是懒......还是离线装装好了. (每次博客也一大堆错别字,别在意这些细节,最近右手手腕很疼,

Mac 10.10.2 Xcode6 代码自动补全插件安装

用习惯了itellij idea,突然切换到Xcode 各种不适应,代码补全不太喜欢,没有idea强大,几经折腾,发现一款插件可以带来类似于Idea的代码提示功能,其名曰:FuzzyAutocomplete,其地址为:https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin,遂欲装之,然下载时遇网络问题,只能通过其他方式下载,下载完之后,按文档上面所说,只需要解压至~/Library/Application Support/Deve

离线安装Chrome 插件

说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.本文主要介绍下安装过程. 本文使用的是解压文件直接进行安装.是比较快速有效的安装方式 第一步:把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar 第二步:右键点击该文件,并使用压缩软件对该压缩文件进行解压,并保存到系统的一个任意文件夹下,自己建好文件夹保存. 第三步:在Chrome的地址栏中输入:chrome://extensions/ 打开Chrome浏览器的扩展程

制作一个简单的百度网盘在线视频加速的chrome插件

原理: 在百度云视频的播放页面的控制台中输入以下语句,就可以将视频播放速度改为1.5倍 videojs.getPlayers("video-player").html5player.tech_.setPlaybackRate(1.5); 使用插件将上面js代码注入到页面中就可以实现上面的效果. 源码:https://github.com/maoyonglong/bdyspeed 参考: 控制播放速度 chrome插件基本知识 原文地址:https://www.cnblogs.com/g

2018/10/31(python)

1.列表(list) 列表中的元素可以是字符串,数字,布尔值,列表还可以嵌套列表. 例   l=[1,2,3,"abc","name",[5,"pad"],b]                          <==列表中的列表被视为一个元素 列表元素可以在原来基础上修改 l=[2,"qwe",'p',1,['r',9,3,"po"],9] l[0]="ide" #改 print

推荐几款专门为Github党量身定做的Chrome插件

GitHub是世界知名的代码托管网站,在中国也有相当多的项目托管在GitHub,给广大程序员和编程爱好者带来了方便,GitHub是很多开发者远程协作的重要工具,其社交化编码的理念伴随着开源运动改变着整个开发社区的生态,无数优质项目依托GitHub在全球开源开发者的参与下蓬勃发展.GitHub作为一款基于Git的代码管理工具和协同工具是很优秀的,然而作为代码浏览和搜索工具,就和IDE差的很远了.不然为什么到今天GitHub连个侧栏的文件树没有,很多开发者要专门去下载浏览器插件才能有文件树.当然,今

离线赛 2019.10.31

2019.10.30 \[ Ameiyo \] A: 地精部落 : Dp , 前缀和优化 Dp B: 深入虎穴 : 图,结论题 C: 教义问答手册 : 分治,分块,Dp A 挺简单的一道 Dp ...看 这个博客 . B 其实可以用 dijsktra 做这道题,但是每次用来更新的都是自己的次小值. 因为当你走到当前点时,老虎会让你不能走最小值,所以是用次小值更新. 每次也是拿次小值最小的点出来更新. ll mi[N][2]; struct NODE { int id; ll w; inline