1. 程式人生 > >關於網站調用在線翻譯api實現翻譯功能

關於網站調用在線翻譯api實現翻譯功能

fun tran ring1 uda api napi {} log class

在做一些網站的時候偶爾會遇到需要中英文翻譯的部分,也許是提供用戶在線翻譯的功能,也可能是把用戶輸入的一整段文字進行翻譯。小龍最近就遇到這麽一個事兒,對接中外兩方用戶的溝通,為了對語言不那麽順暢的用戶提供一點點幫助,在網站裏嵌入了自動翻譯的功能,就簡化了用戶復制黏貼,再打開百度翻譯的步驟了。

小龍用的是有道提供的api,普通用戶就可以免費使用的。有道提供了網頁模塊的調用法和數據接口型的,網頁模塊的會比較簡單一些,在他們官網上把寫好的代碼復制進html就好,這邊簡單展開以下數據接口型的調用。

首先,我們需要一個key,做過百度api的朋友對這個應該是完全不陌生了。申請地址:http://ai.youdao.com/,註冊後就可以申請了。

有道提供的api很簡單:

  http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻譯的文本

一個很標準的GET形式的數據傳輸,想看結果的朋友可以直接申請key以後,將這段鏈接復制進瀏覽器的地址欄,打開,就可以看到回傳的數據了,記得數據類型必須是utf8的,還要url轉碼哦。

小龍給一個PHP的DEMO給參考下:

function simple_translate($sentence
){ $url_sentence = urlencode($sentence); $url = "http://fanyi.youdao.com/openapi.do?keyfrom=xinlei&key=759115437&type=data&doctype=json&version=1.1&q=".$url_sentence; $str_json = file_get_contents($url); if ($str_json){ $info = json_decode($str_json);
$translation = $info->translation; $result_sentence = $translation[0]; }else{ $result_sentence = $sentence; } return $result_sentence; }

這個api有個小小的缺點,就是只能翻譯200個字符以內的段落,多了,他就OOXX了~~~~

我們的解決方法嘛,小龍就把段落切成了句子,然後一句句翻,翻完了拼起來唄。。。最原始的方法了,不過,很好使

給一個加強版的DEMO,會調用到上面的function

function translate($string){
	if ($string){
		$symbol_array = array(".", "?", "!", ")", "(", "[", "]","{", "}",":");
		$i = 0;
		$result = "";
		while($i < strlen($string)){
			if (in_array($string[$i], $symbol_array)){
				$s = $string[$i];
				$string1 = substr($string, 0, $i);
				$string2 = substr($string, $i+1);
				$result = simple_translate($string1).$s.translate($string2);
				break;
			}
			$i++;
		}
		if (!$result){
			$result = simple_translate($string);
		}
		return $result;
	}else{
		return "";
	}
	
}

  按照 . , ? ! : () [] {} 對於段落進行了切割,然後逐句翻譯,最後再整個拼起來。

關於網站調用在線翻譯api實現翻譯功能