hcfyapp / crx-selection-translate Goto Github PK
View Code? Open in Web Editor NEW一站式划词 / 截图 / 网页全文 / 音视频翻译扩展。
Home Page: https://hcfy.app
一站式划词 / 截图 / 网页全文 / 音视频翻译扩展。
Home Page: https://hcfy.app
打开右上角的翻译盒子时,会自动将剪切板的文本粘贴到翻译框并翻译。为这一行为添加一个设置项,默认开启。
v5.2 之前,很多用户反馈总是卡在“正在翻译,请稍候……”,于是在 #11 中我猜测可能的原因之一是因为服务器的 json 数据结构里,原本应该是一个数组的属性不是数组了,导致调用 Array.prototype.join
方法时报错,于是内容脚本接收不到背景页返回的翻译结果,就一直卡在那儿了。
于是在 v5.3 中,我专门对每个应该是数组的地方进行了类型检测,而刚才我在使用有道翻译 platform
的时候,出现了一个有趣的现象:单词详细释义部分是正常的,可是结果部分却显示“啊哦,有道翻译返回了一个奇怪的东西,稍后再重新试试看吧。”,看来我的猜测是正确的!
可是再次翻译的时候,这个问题已经不能重现了。所以我应该在检测到这类错误的时候将相关信息输出在控制台,让我查查看原本应该是数组的地方到底返回了什么,这样也便于用户反馈。
链接内的文本很难划选。或许我可以想一个方式轻松翻译链接内文本。
更进一步的,我可以在检测到错误的时候自动尝试重试。
使用划词翻译的用户越来越多,需求也越来越多,v5.x 的程序结构已经不太容易维护了,我准备花时间再次重写划词翻译,即开发 v6.0。
v6.0 将实现以下目标:
需要注意的是,v6.0 不会修复 bug 或添加新功能,这一版本的主要目标是重组程序结构。
目前的进度:
功能基本已开发完成,我已经将 v6.0 Beta 版发布至 Chrome 网上应用店了,你可以帮忙测试。
这是为了保持划词翻译自身的简单,也方便我自己随时编辑。
最近发现在翻译德语的时候,三种引擎都自动识别为了英语,所以翻译不出来。
建议:
1 尽量提供更多的信息,如读音什么,尽可能的多。查看更多的url==
2 如何有时间,可以增加一个主来源,然后其它来源会相应的出现在下面(ajax延后处理);
信息量还是比较少。
Chrome 更新至 38 后,在https链接下无法发起 http 的ajax请求,这一问题涉及到:
1)翻译结果的获取(在5.0下已统一写死成 https)
2)语言类型的检测(百度和有道都不支持使用 https 访问它们的语言检测接口),这导致https下的播放功能失效。
实际上,在background和popup这类属于扩展程序的页面之中,上面两种限制都没有(background里面也可以播放语音)。所以我决定对扩展进行一点改变:
将background作为一个中间层,content script 和 popup 都通过中间层来得到数据,至于ajax请求、语音播放这类问题就交给中间层来做。
目前,与 stroage 相关的代码分布在各个地方。为了将来能统一处理存储区域,应该将与 stroage 有关的代码都整理到 stroage.js (原 settings.js )中,并提供一个 change 事件用于外部代码监听数据变动。
目前全页翻译用的是快捷键alt+z
很不明显,不看帮助还不知道,建议点击《插件图标(是插件图标,不是划词后出来的译,图标)》后,能够增加一个全页翻译的按钮。
禁用掉发现正常
在「印象笔记-悦读」模式中,无法使用,而其他插件可以使用,比如「PushBullet」,「右键搜」。
在 Chrome 中打开 PDF 文件时,Chrome 默认会使用一个插件来渲染而不是用 DOM,所以划词翻译无法获取用户在插件内选中的文本,但是,我可以使用 pdf.js 在一个新的页面打开 PDF,这样划词翻译就能正常获取到页面上选中的文本了。(至少在这个演示页面是能正常使用的)
顺便将上面提到的演示页面用的 pdf 文件写上,可以用来测试。
http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf
一个官方提供的结合 webpack 使用的例子:
https://github.com/mozilla/pdf.js/tree/master/examples/webpack
mac os 下 ctrl + 鼠标点击相当于鼠标右键功能
希望能自定义组合快捷键
很多用户都反馈总是会出现卡在“正在翻译,请稍候……”的情况,我猜想可能是因为这样几个原因:
join
属性”的错误信息,只有当接口原本应该返回一个数组但又没有返回数组时才会出现这个错误undefined
回来也会导致报错。目前我在模板里做了一个判断,如果是这个情况就显示错误信息。这部分逻辑同样应该移出模板但这些错误都只需要刷新一下网页或者重启一下浏览器就没问题了,可是还有用户反馈无论怎么做都还是会出现问题。所以我应该有一个完备的错误检测过程。从内容脚本发起查询请求到接收到结果,这里面一个环节出了问题,就会导致各种错误。
在显示错误信息的同时,还应该附上一个能帮助用户解决问题的链接才对。否则用户不知道应该刷新浏览器,而是一味的“撞墙”的话,体验就差了。
功能开发的差不多了,是时候加入单元测试了
需求:
1.当我复制的内容是英文时,自动翻译剪切板内的文本。英 -> 中
2.当我复制的内容是中文时,自动翻译剪切板内的文本。中 -> 英
网络语音似乎没那么快...能否设置使用系统的语音引擎呢?
有 Mac 用户反馈,在 Mac 里的 chrome ,使用 Ctrl + 鼠标点击 会出现右键菜单,建议我改为使用 Command 键。
在一些输入框里点击鼠标左键的时候,即使输入框里没有选中文本,“译”的按钮也会弹出来。
这个问题在这些地方出现过:
希望能够让查询过的单词自动加入单词本,并且在单词本中可以查看、删除查询的单词,再配合记录单词本中每个单词被查询的次数的功能。这样的话,使用者通过单词本自动收集不认识的单词,再通过记录每个单词被查次数的功能筛选出对用户而言的高频词,便可以针对性的记忆这些高频词。
这个想法是在参照知乎里如何学英语的话题时根据透析法修改来的,浏览器承担着用户接触英语的责任,在查词的过程中,生词本会容纳对用户而言的生词,但生词有高频和低频,这样就得用记录查询次数的方法透析出高频词。
假如能够实现这些功能的话,就是真的是学英语者福音了。
有时候操作的很快,或者使用触摸板来划词,将词完整划出来很不方便,是否可以添加联想option来提高使用的灵活和敏捷度?
chrome 33及以上支持自定义元素(document.registerElement),但即使不支持,自定义元素也可能正常工作。相关链接:http://www.html5rocks.com/zh/tutorials/webcomponents/customelements/
经常需要copy网页上的一大段英文,
我觉得这个时候没有必要执行翻译请求(结果也是翻译不了),
所以可以考虑增加一个配置项目: 当超过一定长度时不翻译.
thx
RT
如题
绿色的边框有点偏大了,有点影响视觉,可否缩小一点..
固定翻译窗口后,点击页面其它地方还是会隐藏
查看 v5.3 中 select.js 第 382 行 可发现,内容脚本没有等待配置数据准备好就注册了一系列的事件。虽然内容脚本运行于 document_start
,但是在第一个 mouseup
事件发生时,数据(主要是模板,因为模板只会编译一次)可能还没有配置好,导致用户只会看到“没有加载模板!”
解决方案:要么将事件注册移到 chrome.storage.local.get
的回调里,要么就像在 v5.2 中那样,每次设置 template 属性时,都重新编译一次。
关于 template
属性的变更时机:目前用户无法自定义主题,所以模板唯一可能会变更的情况就是在扩展更新的时候,此时内容脚本会与背景页“失去联系”(即发生“无法连接到扩展程序”的错误),不过我会提示用户刷新网页,而刷新之后加载到的模板就是最新的了,所以实际上问题不大;而且,即使未来用户能自定义主题了,可是要在不刷新网页的情况下应用新的主题也很麻烦,因为主题的 css
必须得通过扩展程序注入页面中,而不是通过内容脚本生成一个 style
标签来包含样式,否则某些页面会出现样式不生效的问题,例如用户反馈的 http://source.android.com/devices/tech/security/index.html 与 https://docs.oracle.com/javase/8/docs/api/index.html
希望可以加入网页翻译的默认翻译引擎。 现在默认alt+z网页翻译是有道吧。
有的时候有道感觉并不准确。 但是速度比较快。 翻译不准确的时候我一般都会去用必应翻译 去翻译网页。bing感觉比有道准确一些。
功能大概就是 alt+z可以用预设的网页翻译引擎
如题
而不仅仅是不消失。
建议支持双击选中单词就翻译
划词后显示一个翻译按钮,点击后再翻译。并且为这个功能加一个开关的选项。
目前有款插件,有道翻译,不过是2013年开发的,时不时的就不能工作了。。。。。。
蛋疼,期待你出手了
前面我做了些许控制,让翻译框不会移出浏览器的左侧和顶部,但右侧和底部没做限制,偶尔翻译框会超出。
大概有4个用户建议我加入必应
如题
就是点击浏览器右上角插件图标时出现的翻译盒子,可不可以检测一下用户1秒(或者0.5s ?)内停止输入的话,就自动查询并返回结果,而不是每次输入都要手动点击 “翻译” 按钮。
另外翻译盒子中可不可以通过按 Enter 回车键来关联 “翻译” 按钮呢?
PS:插件很好用,感谢作者!
现有的点击切换开关可以移到 popup 里面,例如在左下角设置一个按钮什么的。
做的简单一点,就一个“翻译”功能。原因是因为有 win8 平板用户无法选中单词,但是长按选中的单词是可以弹出右键菜单的
还要在options.html
里更新一下说明
超出了屏幕。导致选择不了
我认为应该尽量减少用户从点击到得到翻译结果的成本?
尽管目前的做法可能是考虑到用户不希望每次双击都弹出翻译。
不过希望可以考虑增加一个选项,双击直接翻译。
考虑支持英语,但是那么长的语言列表都翻译成英语真是麻烦。。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.