调谷歌自动翻译工具

来源:互联网 发布:new blue 插件 mac 编辑:程序博客网 时间:2024/05/18 04:49


                                                         调谷歌自动翻译工具



前言


国际化是一个即简单有麻烦的事情,如果国际化转码两三个地区语言倒没什么,如果同时需要国际化转码多国语言那工作量就很大了,下面,介绍一个调用谷歌提供的在线翻译工具的代码解决问题。


谷歌支持的地区编码:

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!


备注:也可以将英文或其他语言作为翻译的对象,翻译成其他地区编码的语言。



1 0