谷歌翻译接口使用(android为例)
对于android来说,很多翻译接口要收费的。但是翻译还是有很多网页版的,因此爬虫便成为一种方式。谷歌翻译中国版不需要翻墙,谷歌翻译中有一个接口可以得到翻译后的json。
例子:
https://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh&dt=t&q=Do%20not%20work%20overtime%20tonight
在浏览器打开会下载一个f.txt的文件,内容为:
[[[“今晚不要加班”,”Do not work overtime tonight”,null,null,3]],null,”en”]。
在android中使用流的方式接收,转化为json进行相应处理即可。
如果翻译很长比如:
https://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh&dt=t&q=The%20world%27s%20first%20railless%20train%20is%20tested%20in%20Zhuzhou,%20Central%20China%27s%20Hunan%20province,%20on%20Oct%2023,%202017.%20The%2030-meter%20train%20has%20three%20carriages%20and%20is%20developed%20by%20CRRC%20Zhuzhou%20Locomotive%20Co%20Ltd.%20The%20train%20can%20move%20at%20a%20speed%20of%2070%20km/h%20and%20can%20carry%20up%20to%20500%20passengers.
返回内容会是这个样子的:
[[[“2017年10月23日,中国中部湖南省株洲市测试了世界上第一列无轨列车.30米长的列车有三个车厢,由中国中车株洲机车有限公司开发,列车时速可达70公里/”,”The world’s first railless train is tested in Zhuzhou, Central China’s Hunan province, on Oct 23, 2017. The 30-meter train has three carriages and is developed by CRRC Zhuzhou Locomotive Co Ltd. The train can move at a speed of 70 km/”,null,null,3],[“小时,可载500名乘客。”,”h and can carry up to 500 passengers.”,null,null,3]],null,”en”]
只要进行相应处理与拼接即可。
sl=en 为source language,可设置为auto。
tl=zh 为target language,设置为目标语言。
注意在android中使用HttpURLConnection的话,需要设置User-Agent如:HttpURLConnection.setRequestProperty(“User-Agent”, “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36”);
支持的语言:
“auto”:””Automatic”,
“af”:”Afrikaans”,
“sq”:”Albanian”,
“ar”:”Arabic”,
“hy”:”Armenian”,
“az”:”Azerbaijani”,
“eu”:”Basque”,
“be”:”Belarusian”,
“bn”:”Bengali”,
“bs”:”Bosnian”,
“bg”:”Bulgarian”,
“ca”:”Catalan”,
“ceb”:”Cebuano”,
“ny”:”Chichewa”,
“zh-cn”:”Chinese Simplified”,
“zh-tw”:”Chinese Traditional”,
“co”:”Corsican”,
“hr”:”Croatian”,
“cs”:”Czech”,
“da”:”Danish”,
“nl”:”Dutch”,
“en”:”English”,
“eo”:”Esperanto”,
“et”:”Estonian”,
“tl”:”Filipino”,
“fi”:”Finnish”,
“fr”:”French”,
“fy”:”Frisian”,
“gl”:”Galician”,
“ka”:”Georgian”,
“de”:”German”,
“el”:”Greek”,
“gu”:”Gujarati”,
“ht”:”Haitian Creole”,
“ha”:”Hausa”,
“haw”:”Hawaiian”,
“iw”:”Hebrew”,
“hi”:”Hindi”,
“hmn”:”Hmong”,
“hu”:”Hungarian”,
“is”:”Icelandic”,
“ig”:”Igbo”,
“id”:”Indonesian”,
“ga”:”Irish”,
“it”:”Italian”,
“ja”:”Japanese”,
“jw”:”Javanese”,
“kn”:”Kannada”,
“kk”:”Kazakh”,
“km”:”Khmer”,
“ko”:”Korean”,
“ku”:”Kurdish (Kurmanji)”,
“ky”:”Kyrgyz”,
“lo”:”Lao”,
“la”:”Latin”,
“lv”:”Latvian”,
“lt”:”Lithuanian”,
“lb”:”Luxembourgish”,
“mk”:”Macedonian”,
“mg”:”Malagasy”,
“ms”:”Malay”,
“ml”:”Malayalam”,
“mt”:”Maltese”,
“mi”:”Maori”,
“mr”:”Marathi”,
“mn”:”Mongolian”,
“my”:”Myanmar (Burmese)”,
“ne”:”Nepali”,
“no”:”Norwegian”,
“ps”:”Pashto”,
“fa”:”Persian”,
“pl”:”Polish”,
“pt”:”Portuguese”,
“ma”:”Punjabi”,
“ro”:”Romanian”,
“ru”:”Russian”,
“sm”:”Samoan”,
“gd”:”Scots Gaelic”,
“sr”:”Serbian”,
“st”:”Sesotho”,
“sn”:”Shona”,
“sd”:”Sindhi”,
“si”:”Sinhala”,
“sk”:”Slovak”,
“sl”:”Slovenian”,
“so”:”Somali”,
“es”:”Spanish”,
“su”:”Sudanese”,
“sw”:”Swahili”,
“sv”:”Swedish”,
“tg”:”Tajik”,
“ta”:”Tamil”,
“te”:”Telugu”,
“th”:”Thai”,
“tr”:”Turkish”,
“uk”:”Ukrainian”,
“ur”:”Urdu”,
“uz”:”Uzbek”,
“vi”:”Vietnamese”,
“cy”:”Welsh”,
“xh”:”Xhosa”,
“yi”:”Yiddish”,
“yo”:”Yoruba”,
“zu”:”Zulu”
代码例子:
/*** 翻译回调*/public interface TranslateCallback{public void onTranslateDone(String result);
}
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executors;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;public class TranslateUtil {public static final String TRANSLATE_BASE_URL = "https://translate.google.cn/"; // 不需要翻墙即可使用
// public static final String TRANSLATE_SINGLE_URL = "https://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh&dt=t&q=Do%20not%20work%20overtime%20tonight";public static final String USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";private static String LAN_AUTO = "auto";/*** 翻译,包含http请求,需要异步,返回""则为翻译失败* @param sourceLan 源语言,如en,自动检测为auto* @param targetLan 目标语言如zh* @param content 翻译文本* @return ""为翻译失败,其余成功*/public void translate(Context context, String sourceLan, String targetLan, String content, TranslateCallback callback) {TranslateTask task = new TranslateTask(context, sourceLan, targetLan, content, callback);task.executeOnExecutor(Executors.newCachedThreadPool());}/*** 使用异步任务来翻译,翻译完成后回调callback*/class TranslateTask extends AsyncTask<Void, Void, String> {String sourceLan;String targetLan;String content;Context context;TranslateCallback callback;private LoadingDalog loadingDalog = null; // 这个请自己定义加载中对话框,或者干脆不使用TranslateTask(Context context, String sourceLan, String targetLan, String content, TranslateCallback callback){this.context = context;this.content = content;this.callback = callback;this.sourceLan = sourceLan;this.targetLan = targetLan;}@Overrideprotected String doInBackground(Void... params) {String result = "";if (content == null || content.equals("")) {return result;}try {String googleResult = "";// 新建一个URL对象URL url = new URL(getTranslateUrl(sourceLan, targetLan, content));// 打开一个HttpURLConnection连接HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();// 设置连接主机超时时间urlConn.setConnectTimeout(5 * 1000);//设置从主机读取数据超时urlConn.setReadTimeout(5 * 1000);// 设置是否使用缓存 默认是trueurlConn.setUseCaches(false);// 设置为Post请求urlConn.setRequestMethod("GET");//urlConn设置请求头信息urlConn.setRequestProperty("User-Agent", USER_AGENT);//设置请求中的媒体类型信息。
// urlConn.setRequestProperty("Content-Type", "application/json");//设置客户端与服务连接类型
// urlConn.addRequestProperty("Connection", "Keep-Alive");// 开始连接urlConn.connect();// 判断请求是否成功int statusCode = urlConn.getResponseCode();if (statusCode == 200) {// 获取返回的数据googleResult = streamToString(urlConn.getInputStream());}// 关闭连接urlConn.disconnect();// 处理返回结果,拼接JSONArray jsonArray = new JSONArray(googleResult).getJSONArray(0);for (int i = 0; i < jsonArray.length(); i++) {result += jsonArray.getJSONArray(i).getString(0);}} catch (Exception e) {
// result = "翻译失败";e.printStackTrace();result = "";}Log.d("TAG", "翻译结果:" + result);return result;}@Overrideprotected void onPostExecute(String result) {if (loadingDalog != null && loadingDalog.isShowing()) {loadingDalog.cancel();}if (callback != null){callback.onTranslateDone(result);}super.onPostExecute(result);}@Overrideprotected void onPreExecute() {super.onPreExecute();String str = context.getString(R.string.translating);try {loadingDalog = new LoadingDalog(context);// Dialog使用、初始化loadingDalog.setMessage(str);loadingDalog.show();} catch (Exception e) {e.printStackTrace();}}}/*** 将输入流转换成字符串** @param is 从网络获取的输入流* @return 字符串*/public static String streamToString(InputStream is) {try {ByteArrayOutputStream out = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) != -1) {out.write(buffer, 0, len);}out.close();is.close();byte[] byteArray = out.toByteArray();return new String(byteArray);} catch (Exception e) {return null;}}public void translate(Context context, String targetLan, String content, TranslateCallback callback) {translate(context, LAN_AUTO, targetLan, content, callback);}private static String getTranslateUrl(String sourceLan, String targetLan, String content) {try {return TRANSLATE_BASE_URL + "translate_a/single?client=gtx&sl=" + sourceLan + "&tl=" + targetLan + "&dt=t&q=" + URLEncoder.encode(content, "UTF-8");} catch (Exception e) {return TRANSLATE_BASE_URL + "translate_a/single?client=gtx&sl=" + sourceLan + "&tl=" + targetLan + "&dt=t&q=" + content;}
}
// 使用
TranslateCallback translateCallback = new TranslateCallback() {@Overridepublic void onTranslateDone(String result) {// result是翻译结果,在这里使用翻译结果,比如使用对话框显示翻译结果}
}
new TranslateUtil().translate(activity, "auto", "en", "待翻译内容", translateCallback);
谷歌翻译接口使用(android为例)相关推荐
- Google自动翻译工具:对接谷歌翻译接口,实现本地化运行
Google自动翻译工具通过对接谷歌翻译api接口,实现Google翻译本地化运行,通过Google自动翻译工具我们可以对我们的txt/word/excl等多格式文本进行批量的翻译,并且会保留翻译格式 ...
- 复活天若OCR的谷歌翻译接口
文章目录 1. 资源 2. 效果 3. 前言 4. 网络相关 4.1. 网络判断 4.2. 网络设置 5. 修改 5.1. 代码修改原理 5.2. 代码修改 1. 资源 这里直接放出来我已经修改编译好 ...
- Python实现google翻译,免费多线程使用谷歌翻译接口
文章说明 本文实现的方式大部分源码是从借鉴别人的博客,再他们的基础上修复了不能翻译的问题和其他的一些bug.但是原文找不到了,没法粘贴原文地址了,非常抱歉. 本文章解决的问题有: 翻译不来,在之前基础 ...
- Android中谷歌翻译接口使用(使用谷歌翻译接口,App做文本翻译)
原文章:https://blog.csdn.net/pifutan/article/details/78554691.结合原文按照自己需求,实现功能.效果如下: 功能实现: 使用Android自带Sp ...
- php调用谷歌翻译接口_一个google翻译的php调用方式
直接看代码<?php /** * translate() * * 翻译函数 * * @param mixed $text 待翻译的内容 * @param string $language 翻译的 ...
- 教你找到免费的Google Translate API(谷歌翻译接口)+C#版的Google翻译函数
http://www.crifan.com/teach_you_how_to_find_free_google_translate_api/ (还没试过有时间试下.....) 今日,在想要在C#中,利 ...
- Python调用谷歌翻译接口
安装 翻译 语法识别 语种缩略表示 官方文档 安装 pip install googletrans 翻译 from googletrans import Translator translator = ...
- python 谷歌翻译接口_谷歌翻译python接口
原博文 2017-08-31 10:39 − 项目地址: https://github.com/ssut/py-googletrans 安装: sudo pip install googletrans ...
- 谷歌翻译接口识别语言php,利用谷歌翻译接口实现网站多语言切换
js利用<?php $language_trans_array = array( array('value' =>'sl=&tl=de', 'text' =>'German' ...
最新文章
- 使用 USB 设备安装 Windows 10虚拟机
- Windows下RStudio环境安装
- Makefile的伪目标
- 8.2.5: Spring3.0新增的@DependsOn和@Lazy
- github建立静态网站,域名解析和跳转
- linux cer证书转为jks,常见SSL证书格式介绍以及SSL证书格式转化方法
- python抽荣耀水晶_教你2种免费拿荣耀水晶的方法,获奖概率让人惊喜,一般人我不告诉他...
- 【Henu ACM Round#18 F】Arthur and Walls
- Java课程设计——学生信息系统(团队)
- Android 中文 API (20) —— DatePicker
- php框架laravel构造者,Laravel框架的体系结构
- android 连接已保存的wifi,手机连接WiFi显示已保存但是连接不上
- 一种智能花盆参考设计
- 农业银行查询开户支行的方法
- GitHub上AI岗位面试笔记(机器学习算法/深度学习/ NLP/计算机视觉)
- 带你从Vue入门到进阶
- ubuntu 下tftp服务器配置笔记
- 苹果icloud邮箱抓取
- 金陵科技学院计算机系男女比,【为男女比例正名】揭秘南京26所高校男女生比例!...
- Oracle数据库连接的账号密码过期的解决教程
热门文章
- Assert 的用法
- SQL注入回顾篇(一)
- icpc2018-焦作-E Resistors in Parallel-数论+大数
- 汇编语言of常用指令
- 组合数的几种常规求法
- Arnold材质节点篇- 动态模糊Motion blur
- Java类初始化顺序(变量赋值与静态代码块的执行时间)
- Java岗面试12家大厂成功跳槽,含泪整理面经
- IDea 工具debug模式详细说明
- 美通企业日报 | 内容质量是亚太媒体最重视的指标;“豆蔻青”将成2020年度色彩...