浏览器插件-离线英汉词典
如前文在浏览器插件中读取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 载入部分词典(文件) { return function () { var 文件路径 = 词典路径 + 文件 + 文件扩展; fetch(chrome.runtime.getURL(文件路径)) .then((响应) => 响应.json()) .then((数据) => { for (var 英文 in 数据) { 词典数据[英文] = 数据[英文]; } 词典文件[文件] = true; }); } } for (var 文件 in 词典文件) { 载入部分词典(文件)(); } function 已载入词典() { for (var 文件 in 词典文件) { if (!词典文件[文件]) { return false; } } return true; } function 取释义(选中文本) { var 释义 = 词典数据[选中文本]; if (!释义) { 选中文本 = 选中文本.toLowerCase(); 释义 = 词典数据[选中文本]; } return 释义; }
主界面.js
function 翻译选中文本() { chrome.tabs.executeScript({ code: "window.getSelection().toString();" }, function (选中内容) { // TODO: 如果没有toString, 报错: -,.toLowerCase is not function var 选中文本 = 选中内容.toString(); if (!选中文本) { 置弹窗内容("无选中文本"); return; } var 词典接口 = chrome.extension.getBackgroundPage(); if (!词典接口.已载入词典()) { 置弹窗内容("载入词典数据中..."); return; } var 释义 = 词典接口.取释义(选中文本); 置弹窗内容(选中文本, 释义); }); } function 置弹窗内容(英文, 释义) { var 窗体 = document.body; var 英文部分 = document.getElementById("英文"); var 释义部分 = document.getElementById("释义"); 英文部分.appendChild(document.createTextNode(英文)); var 多行 = 释义.split('\\n'); for (var 行数 in 多行) { 释义部分.appendChild(document.createTextNode(多行[行数])); 释义部分.appendChild(document.createElement("br")); } } 翻译选中文本();
另, 已在Chrome插件商店发布. 链接如下:
2018-10-12
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在浏览器插件中读取JSON资源文件
续前文: 浏览器插件实现GitHub代码翻译原型演示 此改进只为演示: 词典数据提取到json文件 · program-in-chinese/webextension_github_code_translator@ce932df manifest.json中添加资源路径: "web_accessible_resources": [ "词典数据/*.json" ] 主界面.js中加载数据: const 关键词词典文件 = '词典数据/关键词.json' fetch(chrome.runtime.getURL(关键词词典文件)) .then((响应) => 响应.json()) .then((词典数据) => 关键词词典 = 词典数据) .then(翻译代码段); 下面打算通过这个方法, 使用Java实现英汉词典API初版发布在Maven中的英汉词典数据, 实现一个离线英汉词典浏览器插件(现在看到的英汉词典插件都通过访问在线服务实现). 还需将原始csv数据转换为JSON, 考虑为缩减数据量删去原数据中的英文释义部分, 即使如此插件包也至少10多M, 顺便挑战一下火狐插件大小上...
- 下一篇
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...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程