关于网站调用在线翻译api实现翻译功能
在做一些網(wǎng)站的時候偶爾會遇到需要中英文翻譯的部分,也許是提供用戶在線翻譯的功能,也可能是把用戶輸入的一整段文字進行翻譯。小龍最近就遇到這么一個事兒,對接中外兩方用戶的溝通,為了對語言不那么順暢的用戶提供一點點幫助,在網(wǎng)站里嵌入了自動翻譯的功能,就簡化了用戶復(fù)制黏貼,再打開百度翻譯的步驟了。
小龍用的是有道提供的api,普通用戶就可以免費使用的。有道提供了網(wǎng)頁模塊的調(diào)用法和數(shù)據(jù)接口型的,網(wǎng)頁模塊的會比較簡單一些,在他們官網(wǎng)上把寫好的代碼復(fù)制進html就好,這邊簡單展開以下數(shù)據(jù)接口型的調(diào)用。
首先,我們需要一個key,做過百度api的朋友對這個應(yīng)該是完全不陌生了。申請地址:http://ai.youdao.com/,注冊后就可以申請了。
有道提供的api很簡單:
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻譯的文本
一個很標(biāo)準(zhǔn)的GET形式的數(shù)據(jù)傳輸,想看結(jié)果的朋友可以直接申請key以后,將這段鏈接復(fù)制進瀏覽器的地址欄,打開,就可以看到回傳的數(shù)據(jù)了,記得數(shù)據(jù)類型必須是utf8的,還要url轉(zhuǎn)碼哦。
小龍給一個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個字符以內(nèi)的段落,多了,他就OOXX了~~~~
我們的解決方法嘛,小龍就把段落切成了句子,然后一句句翻,翻完了拼起來唄。。。最原始的方法了,不過,很好使
給一個加強版的DEMO,會調(diào)用到上面的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 "";}}按照 . , ? ! : () [] {} 對于段落進行了切割,然后逐句翻譯,最后再整個拼起來。
轉(zhuǎn)載于:https://www.cnblogs.com/starkiller/p/6928954.html
總結(jié)
以上是生活随笔為你收集整理的关于网站调用在线翻译api实现翻译功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4G最快网速相当于30M宽带
- 下一篇: PHP开发经常遇到的几个错误