因为工作产品需要,需要APP 开发翻译功能。

由于谷歌翻译API进行收费,

搜索了一下,网上有2中方式实现。

1.破解生成token规律。

2.用httpclient访问web,然后解析

两种方式都比较麻烦。

经过google发现还有更简单的方式:

"https://translate.googleapis.com/translate_a/single?client=gtx&sl={fromCulture}&tl={toCulture}&dt=t&q={text}" 

client ,dt 两个参数不要修改,不然无法正常工作

sl 为要翻译的文本语言,如果不知道,可以为auto

tl 为目标语言。必须指定

q 为要翻译的文本。注意中文的 UrlEncoded 问题

写成工具类可以如下:


import com.alibaba.fastjson.JSONArray;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.*;public class GoogleTranslateTest {public static void main(String args[]) throws Exception {System.out.println("-----test-----");String txt="永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修禊事也。群贤毕至,少长咸集。此地有崇山峻岭,茂林修竹;又有清流激湍,映带左右,引以为流觞曲水,列坐其次。虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。是日也,天朗气清,惠风和畅,仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,信可乐也。\n" +"夫人之相与,俯仰一世,或取诸怀抱,悟言一室之内;或因寄所托,放浪形骸之外。虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至。及其所之既倦,情随事迁,感慨系之矣。向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀。况修短随化,终期于尽。古人云:“死生亦大矣。”岂不痛哉!(不知老之将至 一作:曾不知老之将至)\n" +"每览昔人兴感之由,若合一契,未尝不临文嗟悼,不能喻之于怀。固知一死生为虚诞,齐彭殇为妄作。后之视今,亦犹今之视昔。悲夫!故列叙时人,录其所述,虽世殊事异,所以兴怀,其致一也。后之览者,亦将有感于斯文。";GT g = GT.getInstance();System.out.println( g.translateText(txt,"auto","en"));System.out.println( g.translateText("谁能说支持不支持","auto","en"));}
}/*** 谷歌翻译类*/
class GT {private static final String PATH="https://translate.googleapis.com/translate_a/single"; //地址private static final String CLIENT="gtx";private static final String USER_AGENT="Mozilla/5.0";//"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36";private static final Map<String,String> LANGUAGE_MAP=new HashMap();private static GT _instance = null;/*** 获取单例* @return*/public static GT getInstance() {if( null == _instance){_instance = new GT();_instance.init();}return _instance;}/*** 初始化语言类*/private void init(){LANGUAGE_MAP.put("auto","Automatic");LANGUAGE_MAP.put("af","Afrikaans");LANGUAGE_MAP.put("sq","Albanian");LANGUAGE_MAP.put("am","Amharic");LANGUAGE_MAP.put("ar","Arabic");LANGUAGE_MAP.put("hy","Armenian");LANGUAGE_MAP.put("az","Azerbaijani");LANGUAGE_MAP.put("eu","Basque");LANGUAGE_MAP.put("be","Belarusian");LANGUAGE_MAP.put("bn","Bengali");LANGUAGE_MAP.put("bs","Bosnian");LANGUAGE_MAP.put("bg","Bulgarian");LANGUAGE_MAP.put("ca","Catalan");LANGUAGE_MAP.put("ceb","Cebuano");LANGUAGE_MAP.put("ny","Chichewa");LANGUAGE_MAP.put("zh_cn","Chinese Simplified");LANGUAGE_MAP.put("zh_tw","Chinese Traditional");LANGUAGE_MAP.put("co","Corsican");LANGUAGE_MAP.put("hr","Croatian");LANGUAGE_MAP.put("cs","Czech");LANGUAGE_MAP.put("da","Danish");LANGUAGE_MAP.put("nl","Dutch");LANGUAGE_MAP.put("en","English");LANGUAGE_MAP.put("eo","Esperanto");LANGUAGE_MAP.put("et","Estonian");LANGUAGE_MAP.put("tl","Filipino");LANGUAGE_MAP.put("fi","Finnish");LANGUAGE_MAP.put("fr","French");LANGUAGE_MAP.put("fy","Frisian");LANGUAGE_MAP.put("gl","Galician");LANGUAGE_MAP.put("ka","Georgian");LANGUAGE_MAP.put("de","German");LANGUAGE_MAP.put("el","Greek");LANGUAGE_MAP.put("gu","Gujarati");LANGUAGE_MAP.put("ht","Haitian Creole");LANGUAGE_MAP.put("ha","Hausa");LANGUAGE_MAP.put("haw","Hawaiian");LANGUAGE_MAP.put("iw","Hebrew");LANGUAGE_MAP.put("hi","Hindi");LANGUAGE_MAP.put("hmn","Hmong");LANGUAGE_MAP.put("hu","Hungarian");LANGUAGE_MAP.put("is","Icelandic");LANGUAGE_MAP.put("ig","Igbo");LANGUAGE_MAP.put("id","Indonesian");LANGUAGE_MAP.put("ga","Irish");LANGUAGE_MAP.put("it","Italian");LANGUAGE_MAP.put("ja","Japanese");LANGUAGE_MAP.put("jw","Javanese");LANGUAGE_MAP.put("kn","Kannada");LANGUAGE_MAP.put("kk","Kazakh");LANGUAGE_MAP.put("km","Khmer");LANGUAGE_MAP.put("ko","Korean");LANGUAGE_MAP.put("ku","Kurdish (Kurmanji)");LANGUAGE_MAP.put("ky","Kyrgyz");LANGUAGE_MAP.put("lo","Lao");LANGUAGE_MAP.put("la","Latin");LANGUAGE_MAP.put("lv","Latvian");LANGUAGE_MAP.put("lt","Lithuanian");LANGUAGE_MAP.put("lb","Luxembourgish");LANGUAGE_MAP.put("mk","Macedonian");LANGUAGE_MAP.put("mg","Malagasy");LANGUAGE_MAP.put("ms","Malay");LANGUAGE_MAP.put("ml","Malayalam");LANGUAGE_MAP.put("mt","Maltese");LANGUAGE_MAP.put("mi","Maori");LANGUAGE_MAP.put("mr","Marathi");LANGUAGE_MAP.put("mn","Mongolian");LANGUAGE_MAP.put("my","Myanmar (Burmese)");LANGUAGE_MAP.put("ne","Nepali");LANGUAGE_MAP.put("no","Norwegian");LANGUAGE_MAP.put("ps","Pashto");LANGUAGE_MAP.put("fa","Persian");LANGUAGE_MAP.put("pl","Polish");LANGUAGE_MAP.put("pt","Portuguese");LANGUAGE_MAP.put("ma","Punjabi");LANGUAGE_MAP.put("ro","Romanian");LANGUAGE_MAP.put("ru","Russian");LANGUAGE_MAP.put("sm","Samoan");LANGUAGE_MAP.put("gd","Scots Gaelic");LANGUAGE_MAP.put("sr","Serbian");LANGUAGE_MAP.put("st","Sesotho");LANGUAGE_MAP.put("sn","Shona");LANGUAGE_MAP.put("sd","Sindhi");LANGUAGE_MAP.put("si","Sinhala");LANGUAGE_MAP.put("sk","Slovak");LANGUAGE_MAP.put("sl","Slovenian");LANGUAGE_MAP.put("so","Somali");LANGUAGE_MAP.put("es","Spanish");LANGUAGE_MAP.put("su","Sundanese");LANGUAGE_MAP.put("sw","Swahili");LANGUAGE_MAP.put("sv","Swedish");LANGUAGE_MAP.put("tg","Tajik");LANGUAGE_MAP.put("ta","Tamil");LANGUAGE_MAP.put("te","Telugu");LANGUAGE_MAP.put("th","Thai");LANGUAGE_MAP.put("tr","Turkish");LANGUAGE_MAP.put("uk","Ukrainian");LANGUAGE_MAP.put("ur","Urdu");LANGUAGE_MAP.put("uz","Uzbek");LANGUAGE_MAP.put("vi","Vietnamese");LANGUAGE_MAP.put("cy","Welsh");LANGUAGE_MAP.put("xh","Xhosa");LANGUAGE_MAP.put("yi","Yiddish");LANGUAGE_MAP.put("yo","Yoruba");LANGUAGE_MAP.put("zu","Zulu");}/*** 判断语言是否支持* @param language* @return*/public boolean isSupport(String language){if( null == LANGUAGE_MAP.get( language )){return false;}return true;}/** 获取 语言代码* ISO 639-1 code* @param desiredLang 语言* @return 如果返回null则标示不支持*/public String getCode(String desiredLang){if( null != LANGUAGE_MAP.get(desiredLang)){return desiredLang;}String tmp = desiredLang.toLowerCase();for(Map.Entry<String, String> enter : LANGUAGE_MAP.entrySet() ){if( enter.getValue().equals( tmp)){return enter.getKey();}}return null;}/*** 翻译文本* @param text  文本内容* @param sourceLang  文本所属语言。如果不知道,可以使用auto* @param targetLang  目标语言。必须是明确的有效的目标语言* @return* @throws Exception*/public String translateText(String text,String sourceLang, String targetLang) throws Exception{String retStr="";if( !( isSupport(sourceLang) || isSupport(targetLang) ) ){throw new Exception("不支持的语言类型");}List<NameValuePair> nvps = new ArrayList();nvps.add(new BasicNameValuePair("client", CLIENT));nvps.add(new BasicNameValuePair("sl", sourceLang));nvps.add(new BasicNameValuePair("tl", targetLang));nvps.add(new BasicNameValuePair("dt", "t"));nvps.add(new BasicNameValuePair("q", text));
//        String finalPath=PATH +"?client="+CLIENT+"&sl="+sourceLang+"&tl="+targetLang+"&dt=t&q="+ text ;String resp =  postHttp( PATH,nvps);if( null == resp ){throw  new Exception("网络异常");}//        System.out.println( "==>返回内容:" + resp);JSONArray jsonObject = JSONArray.parseArray( resp );for (Iterator<Object> it = jsonObject.getJSONArray(0).iterator(); it.hasNext(); ) {JSONArray a = (JSONArray) it.next();retStr += a.getString(0);}return retStr;}/*** post 请求* @param url 请求地址* @param nvps 参数列表* @return* @throws UnsupportedEncodingException*/private   String postHttp( String url ,List<NameValuePair> nvps){String responseStr = null;CloseableHttpClient httpclient = HttpClients.createDefault();HttpPost httpPost = new HttpPost( url );//重要!!必须设置 http 头,否则返回为乱码httpPost.setHeader("User-Agent",USER_AGENT);CloseableHttpResponse response2 = null;try {// 重要!! 指定编码,对中文进行编码httpPost.setEntity( new UrlEncodedFormEntity(nvps, Charset.forName("UTF-8"))  );response2 = httpclient.execute(httpPost);HttpEntity entity2 = response2.getEntity();responseStr = EntityUtils.toString(entity2);EntityUtils.consume(entity2);} catch (IOException e) {e.printStackTrace();} finally {if (null != response2) {try {response2.close();} catch (IOException e) {e.printStackTrace();}}if( null != httpclient ){try {httpclient.close();} catch (IOException e) {e.printStackTrace();}}}return responseStr;}}

调用谷歌翻译API(FREE)的java代码相关推荐

  1. node调用谷歌翻译Api,实现自动国际化

    原因: 项目国际化过程繁琐,每次都需要人工去google翻译,导致工作效率不高. 需求: 1.减少人工的重复劳动,提高工作效率. 2.使用脚本调用谷歌翻译接口自动化翻译. 3.free,作为程序员肯定 ...

  2. 转:利用python调用谷歌翻译API

    废话少说 从速卖通抓取了一些评论想进行一些简单的文本分析,但是因为速卖通是一个跨境电商平台,上边的评论基本都是小语种,对,小语种,俄语,法语...英语还可以勉强应付一下,但是其他真的是一个字母都不认识 ...

  3. 前端js调用百度翻译api接口

    目录 1.到百度翻译开放平台注册自己的账号 2.编辑html代码,设计一个简易的页面 3.远程调用百度翻译api 4.完整代码 5.测试 到百度翻译开放平台注册自己的账号 (1)进入网页:开放平台官网 ...

  4. python调用谷歌翻译英文文献pdf_Python 调用 Google Translate API 批量翻译文章

    有时候批量翻译中文文章,批量变成各个小语种的语言,手动的粘贴复制是非常慢的.需要调用翻译 API 接口,综合对比市面上的各个翻译 API,个人觉得 Google 的翻译 API 最为好用和准确. 下面 ...

  5. python调用百度翻译-python3调用百度翻译API实时翻译的实例代码

    python3调用百度翻译API实现实时翻译 今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个 ...

  6. python调用百度翻译-Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  7. 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  8. 一个Qt调用百度翻译API进行文本翻译的程序记录,辅助ts文件进行翻译。

    项目要求有多国语言翻译,但是手动的去复制粘贴翻译显然不是合理的,组里有人写过类似工具,但是我这里没有源码,又想根据我的需求定制一些功能,所以借鉴现有的界面,如下图 下面先搞定核心功能:百度翻译api的 ...

  9. Python3 调用谷歌翻译 英汉互译

    Python3 调用谷歌翻译 将英文翻译成中文 代码如下: import urllib.request import execjsclass Py4Js():def __init__(self):se ...

  10. qq浏览器网页翻译_如何通过Edge浏览器调用“谷歌翻译”,将整个网页翻译为中文...

    调用谷歌翻译,需要用到"油猴"插件,以及"网页翻译助手"脚本,只要你安装,就可以直接将网页翻译为中文. 介绍: 油猴介绍:Tampermonkey(油猴脚本)是 ...

最新文章

  1. 项目松弛时期 团队如何休养生息?
  2. 织梦添加搜索框里的提示消息
  3. Database----Cursor
  4. 函数作为返回值练习 作用域和作用域链及预解析 闭包 闭包小案例
  5. HTTP/2 规格制定完成
  6. 孙叫兽进阶之路之源代码配置管理过程(图文教程)
  7. Mysql数据库---约束类型_mysql数据库的数据类型及约束
  8. 开放计算中国社区技术峰会举行,开放开源加速产业创新
  9. dijkstra算法代码_深度好文:改变了我们生活方式最有影响力的5种图算法
  10. 关于redis的db的使用几号db的问题
  11. 在高考作弊这事上,古今监考老师操碎了心!
  12. [SDOI2011]计算器
  13. 如何导出专业的工程图纸(附工图模板)
  14. SQL中模式的定义和删除
  15. 求超大文件上传方案( c# )
  16. 海外云服务器备份和恢复的6种最佳做法
  17. iPhone麦田守望者》
  18. Ubuntu 完全卸载软件常用命令
  19. 怎么保证自动化脚本没有问题_质量保证将使设计变得自动化
  20. CSS 学习笔记总结(借鉴黑马程序员pink老师前端入门)

热门文章

  1. 清明上河图 HTML 代码
  2. UReport2初体验
  3. 51单片机驱动TM1638芯片+Proteus仿真
  4. HTML5期末大作业:网站——餐饮网页设计(HTML+CSS+JS)
  5. python 工资管理软件_Python:企业微信指量发工资条工具 -消息发送模块
  6. 51单片机-宏晶STC与硬仿真
  7. 4款Windows必装的软件,免费又实用,让你的电脑无所不能
  8. [论文阅读] 激光点云分割-RPVNet
  9. 轻松转换矢量图的小工具Vector Magic
  10. 【成功实践篇】VirtualBoX虚拟机和本地共享存储目录