微信公众平台开发5:翻译功能
思路分析
首先對用戶發(fā)送過來的消息進行判斷,判斷消息里是否含有“翻譯”關(guān)鍵字,如果有,則提取翻譯內(nèi)容,然后調(diào)用網(wǎng)絡(luò)上開放的翻譯API 進行翻譯。
我們用有道翻譯API:http://fanyi.youdao.com/openapi?path=data-mode
記下申請時的API key 和keyfrom
關(guān)鍵字判斷與待翻譯內(nèi)容讀取
翻譯消息的格式是 “翻譯+待翻譯內(nèi)容”,所以首先截取前兩個字,判斷是否為 “翻譯” 關(guān)鍵字。
$str_trans=mb_substr($keyword,0,2,"UTF-8");從消息的開頭開始截取,截取兩個字符,然后判斷是否為 “翻譯” 關(guān)鍵字。
$str_valid=mb_substr($keyword,0,-2,"UTF-8");從消息的開頭開始,截掉末尾的兩個字符,判斷是否只輸入“翻譯”兩字,若沒有翻譯內(nèi)容,則輸入的消息也不正確。
接下來進行待翻譯內(nèi)容提取:
$word=mb_substr($keyword,2,200,"UTF-8");從消息的開頭第3個字符開始截取,截取200個字符(API要求字符長度不能超過200),截取出來的即為待翻譯內(nèi)容。注意要翻譯的文本,必須是UTF-8編碼,需要進行urlencode編碼,不然可能返回60錯誤。
接著調(diào)用函數(shù)進行翻譯。
//調(diào)用有道詞典$contentStr=$this->youdaoDic($word);具體實現(xiàn)
數(shù)據(jù)接口:
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻譯的文本將上面的keyfrom 和key換成上面申請的內(nèi)容,然后選擇doctype,再輸入要翻譯的文本,就可以調(diào)用有道翻譯API 進行翻譯了。
有道翻譯提供了三種數(shù)據(jù)格式,這里我們只講解兩種,即xml 和json。
xml 格式
publicfunction youdaoDic($word){ ? $keyfrom="orchid";//申請APIKEY時填的網(wǎng)站名稱內(nèi)容 $apikey="YourApiKey";//從有道申請的APIKEY ? //有道翻譯-xml格式$url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=xml&version=1.1&q='.$word; ? $xmlStyle=simplexml_load_file($url_youdao); ? $errorCode=$xmlStyle->errorCode; ? $paras=$xmlStyle->translation->paragraph;// 獲取翻譯內(nèi)容 ? if($errorCode==0){return$paras;}else{return"無法進行有效的翻譯";}}json 格式
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=good {"errorCode":0"query":"good", "translation":["好"], // 有道翻譯 "basic":{// 有道詞典-基本詞典 "phonetic":"g?d""uk-phonetic":"g?d"//英式發(fā)音 "us-phonetic":"ɡ?d"//美式發(fā)音 "explains":["好處", "好的""好"]}, "web":[// 有道詞典-網(wǎng)絡(luò)釋義 {"key":"good", "value":["良好","善","美好"]}, {...}]} 代碼:publicfunction youdaoDic($word){ ? $keyfrom="orchid";//申請APIKEY時所填的網(wǎng)站名稱內(nèi)容$apikey="YourApiKey";//從有道申請的APIKEY ? //有道翻譯-json格式$url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=json&version=1.1&q='.$word; ? $jsonStyle=file_get_contents($url_youdao); ? $result=json_decode($jsonStyle,true);// 為 TRUE 時,返回 array ? $errorCode=$result['errorCode']; ? $trans=''; ? if(isset($errorCode)){// ? switch($errorCode){case0:$trans=$result['translation']['0'];break;case20:$trans='要翻譯的文本過長';break;case30:$trans='無法進行有效的翻譯';break;case40:$trans='不支持的語言類型';break;case50:$trans='無效的key';break;default:$trans='出現(xiàn)異常';break;}}return$trans; ? }與有道詞典的翻譯對比如下圖所示:
藝搜參考
在線格式化json
http://www.cnblogs.com/mchina/p/3170565.html
http://www.crazyant.net/920.html
http://stackoverflow.com/questions/8068220/check-if-array-is-null-or-not-in-php
總結(jié)
以上是生活随笔為你收集整理的微信公众平台开发5:翻译功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于ASP.NET 中的主题
- 下一篇: 【three.js】库