调谷歌自动翻译工具

                  调谷歌自动翻译工具

前言

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

谷歌支持的地区编码:


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!


备注:也可以将英文或其他语言作为翻译的对象,翻译成其他地区编码的语言。
--------------------- 
作者:国境之南_ywx 
来源:CSDN 
原文:https://blog.csdn.net/yangwenxue_admin/article/details/53968623 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值