java使用谷歌翻譯
阿新 • • 發佈:2019-04-08
ica eat pcl ace -c trac sam util swe 工具類
package com.zgz.crud.test; 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.nio.charset.Charset; import java.util.*; public 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 */ 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"))); try { response2 = httpclient.execute(httpPost); } catch (IOException e) { e.printStackTrace(); } 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; } }
測試類
package com.zgz.crud.test; public class TestGt { 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("hello","en","zh-cn")); } }
java使用谷歌翻譯