📄 googletranslationengine.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 + -