免费调用谷歌翻译

最近公司有需求,需要调用谷歌翻译的接口。虽然我最后可以勉强实现了翻译的功能,但还是把这个方法记录下来供各位参考。

首先声明,我这种实现方法只能翻译少量的内容,如果想要翻译比较多的内容就只能把内容拆分开来翻译。

1.找到谷歌翻译,通过f12查看谷歌翻译的时候调用的接口:https://translate.google.cn/translate_a/single?client=t&sl=auto&tl=en&hl=zhCN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF8&oe=UTF8&ssel=0&tsel=3&kc=0&tk=80338.476099&q=%E4%BB%96%E4%BB%AC%E8%BF%99%E6%A0%B7%E8%AF%B4

解析开来就是:client=t、sl=auto、tl=toLanguage、hl=fromLanguage、da=at、dt=bd、dt=ex、dt=ld、dt=gca、dt=rw、dt=rm、dt=ss、dt=t、ie=UTF8、oe=UTF8、ssel=0、tsel=3、kc=0、tk=(需要经过js文件的计算)、q=(需要翻译的文字)

这么多参数中只有tk参数最麻烦,需要使用经过js文件的计算得到,js文件我会在文章最后面分享。

2.使用jsoup模拟浏览器发送请求,接收到返回信息并解析返回信息,得到翻译的结果。(注意:一定要给请求中间加一条sleep(1000),否则谷歌可能会封你得ip)

//谷歌翻译(只能翻译比较短的内容)Get
	public static String TranslateGoogleGet(String transalteContente,String fromLanguage,String toLanguage){
		StringBuilder result=new StringBuilder();
		StringBuilder url=new StringBuilder();
		try {
			url.append("https://translate.google.cn/translate_a/single?").append("client=t&sl=").append(fromLanguage)
			.append("&tl=").append(toLanguage).append("&hl=zh-CN").append("&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw")
			.append("&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=0&tsel=0&kc=1&tk=").append(googleToken(transalteContente)).append("&q=")
			.append(URLEncoder.encode(transalteContente, "utf-8"));
		} catch (UnsupportedEncodingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		//获取请求连接
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String resp;
		try {
			resp = HttpUtil.doGet(url.toString());
			if("Error Response:caused by-->connect timed out".equals(resp) || "Error Response:caused by-->Read timed out".equals(resp)
					||"Error Response: HTTP/1.1 503 Service Unavailable".equals(resp)){
				return "error";
			}
			String string = resp.split("]],")[0];
			String[] split = string.split(",null,null,3],");
			for (String string2 : split) {
				if(!string2.contains("[null,null,")){
					String string3 = string2.split("\",\"")[0];
					int start = string3.indexOf("\"")+1;
					result.append(string3.substring(start,string3.length()));
				}
			}
			/*int start = resp.indexOf("\"")+1;
			int end = resp.indexOf("\"", start+1);*/
			/*String[] split = resp.split("]],")[0].replace("[[[", "[").split("],");
			for (String string : split) {
				String replace = string.split(",")[0].replace("[", "").replace("\"", "");
				if(replace!=null && !"null".equals(replace)){
					result.append(replace);
				}
			}*/
			return result.toString();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}

 

/**
	 * 获取谷歌翻译的tk值
	 * @param text
	 * @return
	 */
	 private static String googleToken(String text) {
	        String tk = "";
	        ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
	        try {
	        	//FileReader reader = new FileReader(ConfigUtil.getString("GoogleJs"));
	        	URL resource = TranslateUtil.class.getResource("");
	    		String string = resource.getPath().split("/WEB-INF")[0];
	    		string=string+"/gmphtml/js/Google.js";
	        	FileReader reader = new FileReader(string);
	            engine.eval(reader);
	            if (engine instanceof Invocable) {
	                Invocable invoke = (Invocable)engine;
	                tk = String.valueOf(invoke.invokeFunction("token", text));
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        return tk;
	    }   }

Google.js文件分享:链接:https://pan.baidu.com/s/13HCY0T3BvI9zwQNEzyq0Yw 密码:pow2

 

 

 

 

 

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
要使用谷歌翻译 API 进行 Java 代码调用,你需要先获取到谷歌翻译 API 的访问凭证(API 密钥)。然后,你可以使用 HttpClient 或者其他网络请求库来发送 HTTP 请求并处理响应。下面是一个示例代码: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; public class GoogleTranslateAPI { public static void main(String[] args) { String apiKey = "YOUR_API_KEY"; String textToTranslate = "Hello, world!"; String sourceLanguage = "en"; String targetLanguage = "zh-CN"; try { String translation = translateText(apiKey, textToTranslate, sourceLanguage, targetLanguage); System.out.println("Translation: " + translation); } catch (IOException e) { e.printStackTrace(); } } public static String translateText(String apiKey, String text, String sourceLanguage, String targetLanguage) throws IOException { String encodedText = URLEncoder.encode(text, "UTF-8"); String urlStr = "https://translation.googleapis.com/language/translate/v2?key=" + apiKey + "&q=" + encodedText + "&source=" + sourceLanguage + "&target=" + targetLanguage; URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); // Parse the JSON response to get the translated text String translatedText = parseTranslationResponse(response.toString()); return translatedText; } public static String parseTranslationResponse(String response) { // Parse the JSON response to extract the translated text // Implement your own logic here based on the response format return "Parsed translation"; } } ``` 请替换 `YOUR_API_KEY` 为你自己的谷歌翻译 API 密钥。以上代码中的 `translateText` 方法会发送 HTTP GET 请求到谷歌翻译 API,并解析返回的 JSON 响应以获取翻译结果。你可以根据需要自行解析 JSON 响应。 注意:以上代码只是一个简单示例,你可能需要根据实际需求进行修改和扩展。另外,为了保护 API 密钥,建议将其存储在安全的地方,不要直接在代码中硬编码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值