您的位置:首页 > 移动开发 > 微信开发

微信公众平台消息接口开发(3)中英翻译

2013-12-05 17:48 423 查看
一. 翻译接口:

目前有很多第三方翻译接口,比如有道词典,百度等,开发人员根据这些接口可自己实现中英翻译。

有道翻译的源码:需要自己申请key,然后填入

function translate($keyword)
{
$url = "http://fanyi.youdao.com/openapi.do?keyfrom=******&key=*******&type=data&doctype=json&version=1.1&q=".urlencode($keyword);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);

if(curl_errno($ch))
{ echo 'CURL ERROR Code: '.curl_errno($ch).', reason: '.curl_error($ch);}

curl_close($ch);

//var_dump($content);
$youdao = json_decode($output, true);
$errorcode = $youdao['errorCode'];

$result = "";
if(isset($errorcode)){
switch ($errorcode){
case 0:
$translation = $youdao['translation'][0]; //网络释义
$explains = $youdao['basic']['explains']; //基本解释
if ($translation != "") {
$result = $translation;
}else{
foreach ($explains as $value) {
$result = $result."\n".$value;
}
}
break;
case 20:
$result = "输入错误:要翻译的文本过长";
break;
case 30:
$result = "系统错误:无法进行有效的翻译";
break;
case 40:
$result = "输入错误:不支持的语言类型";
break;
case 50:
$result = "系统错误:无效的密钥,没有权限翻译";
break;
default:
$result = "系统错误:遇到未知错误,代码:".$errorcode;
break;
}
}
else{
$result = "没有获得翻译结果?请和我们联系";
}
//return $youdao['translation']['0'];
return trim($result);
}


 

 

二、调用实现

 

define("TOKEN", "qq62486");

$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;
}
}


 

三,效果演示

 

英译中

 


中文翻译成英语

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信