微信开发在线翻译功能

稿件来源: 阳光企业网站管理系统   撰稿作者: 太阳光   发表日期: 2014-04-24   阅读次数: 455   查看权限: 游客查看

借用有道API开发微信翻译功能

思路比较简单,对用户输入的文本做一个正侧判断,符合条件就截取字符提交到第三方翻译网站的API里请求数据返回给粉丝。

网络上有很多翻译API,大家可以根据自己的需求进行选择。这里我们选择应用比较广泛的,翻译功能还比较不错的有道翻译API 。事后你可以去申请一个百度翻译试试。

步骤一:申请API
有道申请地址:http://fanyi.youdao.com/openapi?path=data-mode

申请过程很简单,填写几项内容提交即可得到:key:907***754 keyfrom:scscm***
注意使用有道API key 时,请求频率限制为每小时1000次,超过限制会被封禁。除非你另去申请增加请求数。

步骤二:随便想个规则,如粉丝输入 翻译:I LOVE YOU 开始翻译,也就是说翻译:三个字符开头,后面的文本全部拿去翻译。或者说FY:三个字符开头。

步骤三:不多说,我们就以FY:开头作为规则,不区分大小写,直接上码:

<?php
header('Content-Type: text/html; charset=UTF-8');
define("TOKEN", "scsc***"); #修改成你的token
define("KEYFROM", "scsc***"); #修改成你的有道KEYFROM
define("KEY", "907661***"); #修改成你的有道KEY
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
	public function valid()
    {
		if (isset($_GET['echostr'])) {
			if($this->checkSignature()){
				echo $_GET["echostr"];
				exit();
			}
		}else{
			$this-> responseMsg();
		}
    }
	private function checkSignature()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr, SORT_STRING);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
	#有道接口
	function YouDaoTranslate($keyword)
	{
		$url = "http://fanyi.youdao.com/openapi.do?keyfrom=".KEYFROM."&key=".KEY."&type=data&doctype=json&version=1.1&q=".urlencode($keyword);
		$output = file_get_contents($url);
		$youdao = json_decode($output, true);
		$errorcode = $youdao['errorCode'];
		$result = "";
		if(isset($errorcode)){
			switch ($errorcode){
				case 0:
					if(isset($youdao['basic']['us-phonetic']))
						$result  = "发音:英[{$youdao['basic']['phonetic']}] 美[{$youdao['basic']['us-phonetic']}]\n";
					$result .= "快译:".$youdao['translation'][0];
					if (isset($youdao['basic']['explains']))
						$result .= "\n详解:".join("\n",$youdao['basic']['explains']);
					if (isset($youdao['web'])){
						$web = $youdao['web'];
						foreach ($web as $key=>$value){
							if($key){
								$result .= "\n".$value["key"].join(";",$value["value"]);
							}else{
								$result .= "\n网络释义:".join("|",$value["value"])."\n短语:";
							}
						}
					}
					break;
				case 20:
					$result = "输入错误:要翻译的文本过长";
					break;
				case 30:
					$result = "系统错误:无法进行有效的翻译";
					break;
				case 40:
					$result = "输入错误:不支持的语言类型";
					break;
				case 50:
					$result = "系统错误:无效的密钥,没有权限翻译";
					break;
				default:
					$result = "系统错误:遇到未知错误,代码:".$errorcode;
			}
		}
		else{
			$result = "对不起,没有翻译结果!";
		}
		return trim($result);
	}
    public function responseMsg()
    {
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
		if (!empty($postStr)){
			$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
			$fromUsername = $postObj->FromUserName;
			$toUsername = $postObj->ToUserName;
			$times = time();
			$Content = trim($postObj->Content);     
			$msgType = $postObj->MsgType;
			if($msgType == 'text' && preg_match("/^fy:(.+)/i",$Content, $matches)){
				$str = $this->YouDaoTranslate($matches[1]);
				$xml="<xml>
				<ToUserName><![CDATA[{$fromUsername}]]></ToUserName>
				<FromUserName><![CDATA[{$toUsername}]]></FromUserName>
				<CreateTime>{$times}</CreateTime>
				<MsgType><![CDATA[text]]></MsgType>
				<Content><![CDATA[{$str}]]></Content>
				</xml>";
				echo $xml;
				exit ();
			}
        }else{
        	echo '';
		exit ();
        }
    }
}
?>

最后看看效果:

 

关键词: 有道,翻译,微信开发   编辑时间: 2014-04-25 17:38:33

  • 感到高兴

    0

    高兴
  • 感到支持

    0

    支持
  • 感到搞笑

    0

    搞笑
  • 感到不解

    0

    不解
  • 感到谎言

    0

    谎言
  • 感到枪稿

    0

    枪稿
  • 感到震惊

    0

    震惊
  • 感到无奈

    0

    无奈
  • 感到无聊

    0

    无聊
  • 感到反对

    0

    反对
  • 感到愤怒

    0

    愤怒
0%(0)
0%(0)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐