安卓webview加载网页实现网页翻译
前言
说下应用场景,最近安卓要加载一些第三方网站进行用户的开放使用,这些第三方网站基本都是全英文的外国网站,于是产品需求希望能对网站进行中文翻译,类似pc浏览器的谷歌翻译网页
使用步骤
1.注入脚本
代码如下(示例):
-
private void translateWeb() {
-
String javaScript = "javascript:function appendScrip() {"
-
"var head= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.src= 'https://res.zvo.cn/translate/translate.js'; head.appendChild(script);"
-
"}"
-
"appendScrip();";
-
bwvContent.evaluateJavascript(javaScript, new ValueCallback<String>() {
-
-
public void onReceiveValue(String s) {
-
MyLogUtils.e("javaScript.onReceiveValue:" s);
-
bwvContent.postDelayed(new Runnable() {
-
-
public void run() {
-
if (bwvContent==null) {
-
return;
-
}
-
String javaScript2 = "javascript:function startTranslate() {"
-
"translate.localLanguage='zh-CN';translate.selectLanguageTag.show = false;translate.executeByLocalLanguage();"
-
"}"
-
"startTranslate();";
-
bwvContent.evaluateJavascript(javaScript2, new ValueCallback<String>() {
-
-
public void onReceiveValue(String s) {
-
MyLogUtils.e("javaScript2.onReceiveValue:" s);
-
}
-
});
-
}
-
}, 500);
-
}
-
});
-
}
注意点
1.这里的bwvContent用的是腾讯的webview,在执行注入脚本的时候用的evaluateJavascript方法,原生webview如果没有的话用loadurl也可
2.第一段脚本注入和第二段脚本注入加了个500ms的延时操作,因为实测过程中,连续执行的情况下容易没能顺利进行翻译,所以加了个500ms加高成功率,可自行调试测试
3.该方法的注入,选择时机放在了onProgressChanged回调里,当加载进度progress==100时,进行延时1000ms后执行该方法做自动网页翻译,或者由用户手动点击翻译按钮的时候调用,时机的选择自行调试
使用的注入脚本的相关链接:网页多语言翻译 js v1.2,更新翻译接口 - OSCHINA - 中文开源技术交流社区
总结
整体效果还是比较流畅,使用也是比较简单,这里我做的是翻译为中文,根据需要将zh-CN换en等语言便可,甚至自己拓展切换按钮等
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhgfaiac
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13