调谷歌自动翻译工具
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?調谷歌自動翻譯工具
前言
國際化是一個即簡單有麻煩的事情,如果國際化轉碼兩三個地區語言倒沒什么,如果同時需要國際化轉碼多國語言那工作量就很大了,下面,介紹一個調用谷歌提供的在線翻譯工具的代碼解決問題。
谷歌支持的地區編碼:
package com.ywx.test.i18n;/*** 谷歌支持的地區編碼.*/ public enum GoogleLanguage {/*** 地區編碼及名稱的枚舉.*/CHINESE_SIMPLIFIED("zh-CN","簡體中文"),CHINESE_TRADITIONAL("zh-TW","繁體中文"),ENGLISH("en","英文"),JAPAN("ja","日語"),INDIA("in","印度"),RUSSIA("ru","俄文"),FRANCE("fr","法語"),SPAIN("es","西班牙語"),NETHERLANDS("nl","荷蘭語"),SINGAPORE("sg","新加坡語"),THAI("th","泰語");/*** 當前語言的字符串表示形式.*/private String languageCode;/*** 當前語言的名稱.*/private String languageName;/*** 構造函數* * @param 語言標識符。*/private GoogleLanguage(final String languageCode) {this.languageCode = languageCode;}/*** 構造函數* * @param 語言標識符。*/private GoogleLanguage(final String languageCode, final String languageName) {this.languageCode = languageCode;this.languageName = languageName;}public static GoogleLanguage getLuanguage(final String languageCode) {for (GoogleLanguage lang : values()) {if (languageCode.equals(lang.toString())) {return lang;}}return null;}public String getLanguageCode() {return languageCode;}public String getLanguageName() {return languageName;}public String toString(){return this.languageCode;}}
根據地區編碼翻譯語言的代碼:
package com.ywx.test.i18n;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element;public class TranslateToGoogle {private final String ID_RESULTBOX = "result_box";/** 默認地區編碼. **/private static final String DEFAULT_LANG = "zh-CN";private String type = "";public void setContentType(String type) {this.type = type;}/*** 默認翻譯接口.* * @param text* 需要翻譯的內容* @param targetLang* 目標語言編碼* @return 翻譯后的語言* @throws Exception* 翻譯失敗*/public String translate(String text, String targetLang) throws Exception {return translate(text, DEFAULT_LANG, targetLang);}public String[] translate(String[] texts, String targetLang) throws Exception {return translate(texts, "", targetLang);}/*** 翻譯.* * @param text* 需要翻譯的內容* @param srcLang* 源語言編碼* @param targetLang* 目標語言編碼* @return 翻譯后的語言* @throws Exception* 翻譯失敗*/public String translate(String text, String srcLang, String targetLang) throws Exception {return execute(text, srcLang, targetLang);}public String[] translate(String[] texts, String srcLang, String targetLang) throws Exception {StringBuilder content = new StringBuilder();int size = texts.length;for (int i = 0; i < size; i++) {if (i < size - 1) {content.append(texts[i]).append("{*}");} else {content.append(texts[i]);}}String[] temps = execute(content.toString(), srcLang, targetLang).split("\\{\\*\\}");size = temps.length;// 去除左右空白字符for (int i = 0; i < size; i++) {temps[i] = temps[i].trim();}return temps;}/*** 發送翻譯請求.* * @param text* 要翻譯的內容* @param srcLang* 源語言* @param targetLang* 目標語言編碼* @return 目標語言* @throws Exception* 翻譯失敗*/private String execute(final String text, final String srcLang, final String targetLang) throws Exception {inspection(srcLang, targetLang);Document document = Jsoup.connect("http://translate.google.cn")// .connect("https://www.baidu.com/").data("sl", srcLang).data("ie", "UTF-8").data("oe", "UTF-8").data("text", text).data("tl", targetLang)// .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER").cookie("Cookie","Cookie PREF=ID=8daa1f767f10d1fe:U=f5ac701cf7d3f2e0:FF=0:LD=en:CR=2:TM=1277174286:LM=1289370601:S=q7yslRWEZs3uK1H8; NID=39=UO-TWo9HzzjHc-d_wYm7BVR1cH33KpqaN5h5877_i29nERA93FeG1GSuV3ZSvsOx8D-TnHKpB9m0KhZRH8U9uPwoE-arYd0bAyAlILyXZxLO2_TyGQhJpcMiOLVEuCpq; SID=DQAAAHoAAADMlGzeKhnGkbkIJ36tVO0ZPXgmQ6Cth7Oa6geyyE1WJooW8P01uKUHNrsRkjggvFMAWIWB9J5i18z0F6GjC_oV79mSwXEDGuRFGhRnDyJdid3ptjFW0pIyt4_2D6AMIqtOWF71aWdvY7IvAU1AWMNs8fBZHAOgRqtf3aCUkr36ZA; HSID=A6-YJTnhjBdFWukoR").timeout(2000000).post();Element element = document.getElementById(ID_RESULTBOX);String content = element.text();return content;}/*** 檢查Google是否支持語言.*/private void inspection(String srcLang, String targetLang) {if (!"".equals(this.type))setContentType(type);if (GoogleLanguage.getLuanguage(srcLang) == null || GoogleLanguage.getLuanguage(targetLang) == null) {System.out.println("Google不支持的語言!");}}}
測試代碼:
package com.ywx.test.i18n;import java.io.UnsupportedEncodingException; import java.net.URLEncoder;/*** 主函數.**/ public class TranslateTest {public static void main(String[] args) {TranslateToGoogle translate = new TranslateToGoogle();try {String str = "世界,你好!新年快樂!";String language = "ru";System.out.println("翻譯原文:"+str);System.out.println("翻譯語種:" + GoogleLanguage.getLuanguage(language).getLanguageName());System.out.println(translate.translate(str, language));} catch (Exception e) {e.printStackTrace();}}}
運行結果:
翻譯原文:世界,你好!新年快樂! 翻譯語種:俄文 Привет, мир! С Новым Годом!
切換為日語的運行結果:
翻譯原文:世界,你好!新年快樂! 翻譯語種:日語 こんにちは、世界!新年あけましておめでとうございます!
切換為英文的運行結果:
翻譯原文:世界,你好!新年快樂! 翻譯語種:英文 Hello World! happy New Year!
備注:也可以將英文或其他語言作為翻譯的對象,翻譯成其他地區編碼的語言。
總結
- 上一篇: 利用BlenderGIS打造智慧城市建筑
- 下一篇: 使用Fy_Recover_data恢复被