先来看看今天想要完成的功能的样子
Google Chrome 不论是桌面版或是手机版的 App 都有提供全文翻译的功能。它的呈现方式很适合只在意文章内容的人,因为 Chrome 会把当下的画面文字内容在同样的位子置换成选定的翻译语言(如下图所示)
但有些时候,除了想要了解翻译後的内容外,也想要知道原文是怎麽写的;两相对照下才能更加清楚原文的含意,和达到那麽一点点语言学习的效果。所以,其实我想要的呈现方式会是(请见下图):
要做出上图的样子,要完成几件事:
我们来一步步看怎麽进行。
这是其中最容易的步骤,只需要建立一个新的水平方向的 LinearLayout
,让两边的的 weight
都是 1:
android:layout_weight=1
再来是 WebView (B) (置於 translation_panel layout 中) 建立後,预设 Visibility
设为 GONE
。
这部分实作方式可以参考前两篇的说明,简单来说就是先将网页切换成阅读模式,再将主要文字内容利用 Javascript 取得。
其实 Google Translate 是有提供 API 让开发者使用的,能够透过 request 的方式直接取得翻译结果,再由开发者自行决定要怎麽显示翻译结果。但是,天下没有白吃的午餐,在超过一定的使用量之後,Translate API 是要收费的。对於一个主要是开发来自己使用的 browser 来说,不需要用到那麽高级的服务;只需要直接显示 Google Translate 网页就行了。
从网路上的资料可以得知:在开启 Google Translate 网页时,如果带入某些 query string,它其实会在第一次显示时,就有翻译结果;不需要使用者手动再贴上想要翻译的字串。
要叫 Google Translate 网页直接翻译的方式是:
https://translate.google.com/?text="string that needs to be translated"
建立 Google Translate 网页的 url:
private fun buildGTranslateUrl(text: String): String {
val shortenedText: String = if (text.length > TRANSLATION_TEXT_THRESHOLD) text.substring(0, TRANSLATION_TEXT_THRESHOLD) else text
val uri = Uri.Builder()
.scheme("https")
.authority("translate.google.com")
.appendQueryParameter("text", shortenedText)
.appendQueryParameter("sl", "auto") // source language
.appendQueryParameter("tl", "jp") // target language
.build()
return uri.toString()
}
今天先讲到这儿,我们先来看看画面。关於画面中的数字按钮,会在明天的文章中做解释。
https://github.com/plateaukao/browser/releases/tag/v8.10.0
<<: Day21. 用 Rails helper 省去更多开发时间
什麽是暂存器 register? 暂存器顾名思义就是可以存放资料的地方,那也就是记忆体的一种罗? 记...
当没有任何CSS时, HTML预设显示区块元素(block)方式都是 往下一行一行(row)长 HT...
大家好,我是YIYI,今天要开始用Whimsical画架构图了~ 进入Whimsical 先透过【D...
摘要 前言 作业流程 手写中文字开源资料 空白背景图片 筛选出官方800字内 内容 前言 1.1 从...
昨天,我们介绍了指标的一些小概念,不知道读者们是否有比较清楚指标是甚麽东西呢?(我自己在学的时候,会...