续前文: 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版中已基本完成):

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

  1. 2018-11-04 在线代码离线翻译Chrome插件"一马"v0.0.14

    续前文: 在线代码离线翻译Chrome插件"一马"v0.0.8. 主要改进如下. 项目源码库: program-in-chinese/webextension_github_cod ...

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

    续前文Chrome插件实现GitHub代码翻译v0.0.3. 添加了对驼峰命名的支持. 由于调用浏览器插件-离线英汉词典进行词汇翻译, 因此也不依赖于任何在线翻译服务. Chrome插件: 官网链接 ...

  3. 如何离线安装chrome插件【转】

    http://blog.csdn.net/shuideyidi/article/details/45674601 原文链接 前言------可以不看: 实习做web,要弄单点登录SSO和验证Contr ...

  4. VS2017上在线和离线安装Qt插件(在线安装)

    版权声明:如需转载,请告知博主并声明出处 https://blog.csdn.net/CLinuxF/article/details/88816436文章目录前言在线安装离线安装(推荐)前言很多朋友喜 ...

  5. 离线安装Chrome 插件

    说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.本文主要介绍下安装过程. 本文使用的是解压文件直接进行安装.是比较快速有效的安装方式 第一步:把下载后 ...

  6. 离线安装chrome插件

    1. 先百度下载自己要安装的chrome插件,比如:Postman 和 Json View. 2.下载完应该得到的是扩展名为crx的文件. 比如: Postman-REST-Client_v0.8.4 ...

  7. 2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)

    传送门 如果观察到性质其实也不是很难想. 然而考试的时候慌得一批只有心思写暴力233. 下面是几个很有用的性质: c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0 ...

  8. [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]

    之前一段时间都在个人公众号账号“大内老A”发布关于ASP.NET Core的系列文章,很多人留言希望能够同步到这里,所以在这里 对这些文章做一个汇总,以便于PC端阅读.如果说微软官方文档主要关于ASP ...

  9. Unity进阶----AssetBundle_02(加载依赖关系及网络资源)(2018/10/31)

    网络资源加载: string path ="file://"+ Application.streamingAssetsPath + "\\windows\\123&quo ...

随机推荐

  1. Ubuntu 16.04安装Notepadqq编辑器替代Notepad++

    Notepad++只有Windows平台产品,对于Linux下有其替代的产品Notepadqq. 安装: sudo add-apt-repository ppa:notepadqq-team/note ...

  2. Python代码规范之---代码不规范,亲人两行泪

    任何语言的程序员,编写出符合规范的代码,是开始程序生涯的第一步! 关于代码规范 Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档 其中第 8 篇 ...

  3. Abp + gRpc 如何实现用户会话状态传递

    0.背景 在实际项目当中,我们采用的是 Abp 框架,但是 Abp 框架官方并没有针对 Grpc 进行模块封装.基于此我结合 Abp 与 MagicOnion 封装了一个 Abp.Grpc 模块,它包 ...

  4. Net Core集成Exceptionless分布式日志功能以及全局异常过滤

    Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程[asp.Net Core免费开源分布式异常日志收集 ...

  5. 五款实用免费的Python机器学习集成开发环境(5 free Python IDE for Machine Learning)(图文详解)

    前言 集成开发环境(IDE)是提供给程序员和开发者的一种基本应用,用来编写和测试软件.一般而言,IDE 由一个编辑器,一个编译器(或称之为解释器),和一个调试器组成,通常能够通过 GUI(图形界面)来 ...

  6. ⑦JSP2.0的福利(标签文件)

    前言 本篇接着上一篇博客:[传送门] 这次讲的是JSP2.0的特性之一,我们可以编写标签文件,指没有标签处理器和标签类库描述符的定制动作指令,不编译,无标签类描述符. 本文结构: ①标签文件简介 ②第 ...

  7. MongoDB高可用集群+MMS集群监控搭建

    备注: mongodb学习资料 http://www.runoob.com/mongodb/mongodb-tutorial.html 一. 集群的三个组件: mongos(query routers ...

  8. Centos7安装MySQL8.0 - 操作手册

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 一.  Mysql8.0版本相比之前版本的一些特性 1) ...

  9. Mysql的跨表更新

    本文介绍mysql多表 update在实践中几种不同的写法. 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将Pro ...

  10. 《C#并发编程经典实例》学习笔记-第一章并发编程概述

    并发编程的术语 并发 同时做多件事情 多线程 并发的一种形式,它采用多个线程来执行程序. 多线程是并发的一种形式,但不是唯一的形式. 并行处理 把正在执行的大量的任务分割成小块,分配给多个同时运行的线 ...