⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 googletranslationengine.java

📁 javamail 自动翻译邮件
💻 JAVA
字号:
package Common;

import java.io.*;
import java.net.*;

public class GoogleTranslationEngine {

	// 定义互译语言对常数变量,符合google页面相关对译语言对的值 
	public static final String LANGPAIR_CN_EN = "zh-CN|en"; // 汉语到英语 
	public static final String LANGPAIR_EN_CN = "en|zh-CN"; // 英语到汉语 
	public static final String LANGPAIR_EN_JA = "en|ja"; // 英语到日语

	// 定义编码常数 
	public static final String CHARSET_CN = "GBK";
	public static final String CHARSET_JA = "Shift_JIS";

	// google在线翻译引擎url 
	static final String engineUrl = "http://translate.google.com/translate_t";

	/** */
	/** 
	 * 利用google在线翻译引擎实现翻译,并获取翻译内容
	 *  @param  translateText 要翻译的文本内容
	 *  @param  langpair 对译语言的值对,如en|ja是由英语翻译到日语
	 */
	public String translate(String translateText, String langpair)
			throws MalformedURLException, IOException,
			UnsupportedEncodingException {

		// text是google翻译页面提交时对于欲翻译文字的变量名
		// langpair是google翻译页面提交时对于采用何种互对语言的变量名
		if(translateText.indexOf(" ") != -1){
			translateText = translateText.replace(" ", "\b");
		}
		if(translateText.indexOf("\n") !=-1){
			translateText = translateText.replace("\n",",");
		}
		String urlstr = engineUrl + "?text=" + translateText
				+ "&langpair=" + langpair;
		URL url = new URL(urlstr);
		URLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setRequestProperty("User-agent", "IE/6.0"); // 必须,否则报错,到于FF的怎么写,没做过测试         
		connection.connect();

		String charset = getCharsetFromLangpair(langpair); // 自动获取目标语言的编码 
		BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), charset)); // 使用指定编码接收数据 

		String line = null;
		StringBuilder sb = new StringBuilder();
		while ((line = in.readLine()) != null) {
			sb.append(line);
		}
		in.close();

		String translation = getContent(sb.toString());
		return translation;
	}

	/** */
	/** 
	 * 从获得的源文件中剥取翻译内容
	 * 分析google翻译生成的html源码来看
	 * 翻译内容被置于<div id=result_box dir=ltr>和</div>标签之间
	 *  @param  htmltext 获得的网业源代码
	 */
	private String getContent(String htmltext) {
		String ss = "<div id=result_box dir=\"ltr\">";
		String se = "</div>";
		int ssidx = htmltext.indexOf(ss);
		int seidx = htmltext.indexOf(se, ssidx);

		String restr = htmltext.substring(ssidx + ss.length(), seidx);
		return restr;
	}

//	// 将文本进行URL编码 
//	private String encodeText(String text) {
//		String str = java.net.URLEncoder.encode(text);
//		return str;
//	}

	/** */
	/** 
	 * 根据翻译的目标语言获取对应的接收编码
	 *      
	 * @langpair 对译语言的值对,如en|ja是由英语翻译到日语
	 */
	private String getCharsetFromLangpair(String langpair) {
		// 当翻译的目标语言为日语时,采用Shift+JIS编码接收数据 
		if (langpair.equals(LANGPAIR_EN_JA))
			return CHARSET_JA;
		else
			return CHARSET_CN;
	}
/*
	public static void main(String[] args) throws Exception {
		GoogleTranslationEngine2 engine = new GoogleTranslationEngine2();
		String text = "How\bare\byou!";
		String langpair = "en|zh-CN";
		if (args.length >= 2) {
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < args.length - 1; i++) {
				sb.append(args[i]).append("   ");
			}
			text = sb.toString();
			String tmp = args[args.length - 1];
			// 因为在cmd.exe中|是特殊字符,所以不能直接指定翻译对,如"en|ja"所以转一下 
			if (tmp.equals("cn-en"))
				langpair = GoogleTranslationEngine2.LANGPAIR_CN_EN;
			else if (tmp.equals("en-cn"))
				langpair = GoogleTranslationEngine2.LANGPAIR_EN_CN;
			else if (tmp.equals("en-ja"))
				langpair = GoogleTranslationEngine2.LANGPAIR_EN_JA;
			else
				throw new Exception(" 语言对指定错误 ");
		}
		String rst = engine.translate(text, langpair);
		System.out.println(" 翻译内容: " + text);
		System.out.println(" Google翻译结果: " + rst);
	}
*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -