?? googletranslationengine2.java
字號:
package test001;
import java.io. * ;
import java.net. * ;
public class GoogleTranslationEngine2 {
// 定義互譯語言對常數變量,符合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翻譯頁面提交時對于采用何種互對語言的變量名
String urlstr = engineUrl + " ?text= " + encodeText(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 = " hello " ;
String langpair = " en|ja " ;
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 + -