要做一個翻譯賬號,有以下幾步:
一. 有翻譯接口:
目前有道詞典提供了翻譯接口,申請地址 http://fanyi.youdao.com/openapi?path=data-mode
下面是申請介紹:
申請完成后,會收到郵件,郵件中有api key:
數據接口
http://fanyi.youdao.com/openapi.do?
keyfrom=<keyfrom>&key=<key>
&type=data&doctype=<doctype>&version=1.1
&q=要翻譯的文本
版本:1.1,請求方式:get,編碼方式:utf-8
主要功能:中英互譯,同時獲得有道翻譯結果和有道詞典結果(可能沒有)
參數說明:
type - 返回結果的類型,固定為data doctype - 返回結果的數據格式,xml或json或jsonp version - 版本,當前最新版本為1.1 q - 要翻譯的文本,必須是UTF-8編碼,字符長度不能超過200個字符,需要進行urlencode編碼 errorCode: 0 - 正常 20 - 要翻譯的文本過長 30 - 無法進行有效的翻譯 40 - 不支持的語言類型 50 - 無效的key
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" //英式發音 "us-phonetic":"ɡʊd" //美式發音 "explains":[ "好處", "好的" "好" ] }, "web":[ // 有道詞典-網絡釋義 { "key":"good", "value":["良好","善","美好"] }, {...} ] }
二 程序實現:
有道翻譯的源碼:需要自己申請key,然后填入
微信調用
define("TOKEN", "qq612312312312"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; logger("R ".$postStr); //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this->receiveText($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } logger("T ".$resultStr); echo $resultStr; }else { echo ""; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } private function receiveText($object) { $funcFlag = 0; $keyword = trim($object->Content); $resultStr = ""; $cityArray = array(); $contentStr = ""; $needArray = false; $illegal = false; $saytome = false; if (1 == 1){ $contentStr = translate($keyword); $resultStr = $this->transmitText($object, $contentStr, $funcFlag); return $resultStr; } //Content 消息內容,大小限制在2048字節,字段為空為不合法請求 return $resultStr; } private function receiveEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "請直說,我將為你自動翻譯"; break; case "unsubscribe": $contentStr = ""; break; case "CLICK": switch ($object->EventKey) { default: $contentStr = "receive a eventkey: ".$object->EventKey; break; } break; default: $contentStr = "receive a new event: ".$object->Event; break; } $resultStr = $this->transmitText($object, $contentStr); return $resultStr; } private function transmitText($object, $content, $flag = 0) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>%d</FuncFlag> </xml>"; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); return $resultStr; } }
四,效果演示
中文翻譯成英語
==================================
歡迎關注方倍工作室微信,了解我們及行業的最新動態