安卓webview加载网页实现网页翻译

文章介绍了如何在Android应用中使用WebView加载全英文第三方网站,并通过注入JavaScript脚本来实现网页的自动翻译,特别是利用腾讯WebView的evaluateJavascript方法和一个翻译JS接口,确保脚本正确执行并提高翻译成功率。此外,提到了在网页加载完成后适当延迟执行翻译脚本以优化效果。
摘要由CSDN通过智能技术生成

前言

说下应用场景,最近安卓要加载一些第三方网站进行用户的开放使用,这些第三方网站基本都是全英文的外国网站,于是产品需求希望能对网站进行中文翻译,类似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>() {
            @Override
            public void onReceiveValue(String s) {
                MyLogUtils.e("javaScript.onReceiveValue:" + s);
                bwvContent.postDelayed(new Runnable() {
                    @Override
                    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>() {
                            @Override
                            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等语言便可,甚至自己拓展切换按钮等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值