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("编程语言: " + 编程语言), 原代码拷贝); } ); }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
浏览器插件-离线英汉词典
如前文在浏览器插件中读取JSON资源文件末所述, 用浏览器插件实现了不依赖任何在线翻译服务的英汉词典. 由于词典包含77万个词条, 插件大小也达到了13+MB. 词典数据也包含很多常见短语: 源码库: program-in-chinese/webextension_english_chinese_dictionary 在火狐插件网站提交审核时, 发现源文件大小有限制, 超过4MB就不能被审核服务自动分析. 于是按每个词典文件五万词条进行分隔(详见转换到JSON; 按五万行分隔json · program-in-chinese/english-chinese-dictionary@10b55f6) 插件源码主要是导入词典数据和查询/显示两部分: 加载词典.js const 词典路径 = '词典数据/词典' const 文件扩展 = '.json' var 词典文件 = {}; for (var 文件序号 = 0; 文件序号 < 16; 文件序号++) { 词典文件[文件序号] = false; } var 词典数据 = {}; function 载入部分词典(文件) { retur...
- 下一篇
它山之石-日本推广编程中使用日语命名的渊源
续前文首次发现在例程中使用日语命名的编程书籍, 调研了一下日本对日语命名的以往研究和相关政策, 罗列如下, 望多多补充. 希望国内的编程教育(尤其是少儿教育)加以借鉴, 使用中文命名将编程与核心学科紧密结合起来. 2018年3月的小学校プログラミング教育の手引 (第一版) 小学编程教育指导中所有示例都是日语命名, 与其他学科进行了结合: 2018年11月7日更新的: 小学校プログラミング教育の手引 (第二版) 小学编程教育指导 2017年论文小学校におけるプログラミング 教育実践上 の 課題中列举了编程与其他学科的结合, 没有看到英文一项: 2017年的论文ローマ字入力時の日本語識別子入力補完プラグインの 開発开发了辅助插件以改进IDE对输入日语命名的支持. 摘要中提到(有道翻译): 近年来,软件开发项目的复杂性增加了维护软件所需的时间成本,重要的是为降低成本提高源代码的可读性。作为提高源代码的可读性的方法之一,有几个报告表明,用日语写源代码中的变量和函数的标识符名是有用的。 2017年的个人博客: 識別子に日本語を使うことについての考察 - Qiita, 看起来日本业界暂没有一个广泛...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装