Google翻译post提交无长度限制的在线翻译例子

/**
 * http://ahomeeye.iteye.com/blog/841298
 * @author ahomeeye
 */
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class GoogleTranslate {

    private static HttpPost httppost;
    private static HttpResponse response;
    private static final DefaultHttpClient httpclient = new DefaultHttpClient();

    /*
     * @param text 翻译原文
     * @param lanFrom 源语言
     * @param lanTo 目标语言
     * @return 翻译后的字符串
     */
    public static String translate(String text, String lanFrom, String lanTo) {
        List<NameValuePair> qparams = new ArrayList<NameValuePair>();
        qparams.add(new BasicNameValuePair("hl", "en"));
        qparams.add(new BasicNameValuePair("ie", "UTF-8"));
        qparams.add(new BasicNameValuePair("sl", lanFrom));
        qparams.add(new BasicNameValuePair("text", text));
        qparams.add(new BasicNameValuePair("tl", lanTo));

        //HttpClient提交post请求
        httppost = new HttpPost("http://translate.google.com/translate_t#");

        String responseBody = "";
        String content = "";
        try {
            //将参数封装到post数据包中,
            httppost.setEntity(new UrlEncodedFormEntity(qparams, HTTP.UTF_8));
            response = httpclient.execute(httppost);
            responseBody = EntityUtils.toString(response.getEntity());

            //过滤出所需翻译后的内容
            int tmp1 = responseBody.indexOf("result_box");
            int tmp2 = responseBody.indexOf(">", tmp1);
            int tmp3 = responseBody.indexOf("</div>", tmp2);
            content = responseBody.substring(tmp2 + 1, tmp3).replaceAll("<br>", "\n").replaceAll("<[^>]*>", "");//替换换行符和其他网页标签
        } catch (Exception e) {
            return content;
        } finally {
            httppost.abort();
        }
        return content;
    }

    /*
     * 重载上面的translate()方法,实现文本数组的翻译
     */
    public static String[] translate(String[] text, String lanFrom, String lanTo) {
        if (text == null || text.length < 1) {
            return null;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < text.length; i++) {
            if (i < text.length - 1) {
                sb.append(text[i]).append("BBaaBB");
            } else {
                sb.append(text[i]);
            }
        }
        return translate(sb.toString(), lanFrom, lanTo).split("BBaaBB");
    }

    public static void main(String[] args) {
        String text = "我是一个中国人。";
        String[] arrayText = {"我来自广东梅州。", "我爱你,梅州!"};
        //这里实现多国语言间的翻译,大约支持59种语言,语言代码这里不再列出,有需要可到网上搜索
        //语言字符串为国家或地区语言代码,一般为两位,繁体中文为:zh-TW 法语为:fr
        String tranText = GoogleTranslate.translate(text, "zh-CN", "en");
        String[] tranArray = GoogleTranslate.translate(arrayText, "zh-CN", "en");
        System.out.println("tranText=" + tranText);
        for (int i = 0; i < tranArray.length; i++) {
            System.out.println("tranArray[" + i + "]=" + tranArray[i]);
        }
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值