黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

微信开发之翻译功能的步骤详解

来源:黔优媒体网   时间:2024-09-19

一、简介

上一篇文章介绍了微信公众平台天气预报功能的开发,实现了微信公众平台的第一个实际应用,在接下来的这一篇文章中,我们将对微信翻译功能进行简单开发,以供读者参考。

二、思路分析

和上一篇查询天气的思路差不多,首先要对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果含有,则提取待翻译内容,然后调用网络上开放的翻译API 进行相关翻译。

三、翻译API 分析

网络上有很多翻译API,大家可以根据自己的需求进行选择。这里我们选择应用比较广泛的,翻译功能还比较不错的有道翻译API 和百度翻译API,下面对这两种API的相关信息进行分析。

3.1 有道翻译API

3.1.1 API 地址:fanyi.youdao.com/openapi

注意:有道提供的API 接口,在下面的测试时,json 数据格式返回不正确,到网上查阅资料,可以正确翻译的地址为 fanyi.youdao.com/fanyiapi,这点注意。

3.1.2 申请key

按照要求填写相关信息,这些信息,下面会使用到,所以请认真如实填写。

申请完之后,会在下方生成API key 和keyfrom,使用API 时会用到。

3.1.3 API 使用范例

3.1.4 数据格式

a. xml 格式

fanyi.youdao.com/openapi.do?keyfrom=orchid key=1008797533 type=data doctype=xml version=1.1 q=这里是有道翻译API


 ?xml version= 1.0 encoding= UTF-8 ? youdao-fanyi 
 errorCode 0 /errorCode 
 !-- 有道翻译 -- 
 query ![CDATA[这里是有道翻译API]] /query 
 translation 
 paragraph ![CDATA[Here is the youdao translation API]] /paragraph 
 /translation /youdao-fanyi 

b. json 格式

http://fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533&type=data&doctype=json&version=1.1&q=翻译


{
 errorCode :0
 query : 翻译 ,
 translation :[ translation ], // 有道翻译
 basic :{ // 有道词典-基本词典
 phonetic : fān yì ,
 explains :[
 translate ,
 interpret 
 web :[ // 有道词典-网络释义
 key : 翻译 ,
 value :[ translator , translation , translate , Interpreter ]
 {...}
}

3.2 百度翻译API

3.2.1 API 地址:openapi.baidu.com/public/2.0/bmt/translate

3.2.2 获取api key

开发者在百度连接平台上注册得到的授权API key,详细请参阅:http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97

3.2.3 API 使用范例

3.2.4 数据格式

百度翻译API 响应的数据格式为UTF-8编码的PHP数组对应的标准JSON字符串。


{
 “from”:”zh”,
 “to”:”en”,
 “trans_result”:[]
}

trans_result 为一个数组,其中每一个{}就是一个段落,结构如下所示:


trans_result: [
]

段落结果即为trans_result 数组中的一项:


{
“src”:””,
“dst”:””
}

段落结果说明:

经json_decode 后的形式:


{
 from : en ,
 to : zh ,
 trans_result : [
 src : today ,
 dst : 今天 
}

四、关键字判断与待翻译内容读取

翻译消息的格式是 “翻译+待翻译内容”,所以首先截取前两个字,判断是否为 “翻译” 关键字。

使用php函数 mb_substr() 截取,关于该函数的用法上一篇已经讲过,这里不再赘述。

$str_trans = mb_substr($keyword,0,2,"UTF-8");

从消息的开头开始截取,截取两个字符,然后加以判断是否为 “翻译” 关键字。

$str_valid = mb_substr($keyword,0,-2,"UTF-8");

判断是否只输入“翻译”两字,这样输入,没有待翻译内容,则输入的消息也不正确。

接下来进行待翻译内容提取:

$word = mb_substr($keyword,2,220,"UTF-8");

从消息的开头第3个字符开始截取,截取202个字符,截取出来的即为待翻译内容。

接着调用函数进行翻译。


//调用有道词典$contentStr = $this- youdaoDic($word);//调用百度词典$contentStr = $this- baiduDic($word);

五、具体实现

5.1 有道翻译API

数据接口:


http://fanyi.youdao.com/openapi.do?keyfrom= keyfrom key= key type=data doctype= doctype version=1.1 q=要翻译的文本

将上面的keyfrom 和key换成上面申请的内容,然后选择doctype,再输入要翻译的文本,就可以调用有道翻译API 进行翻译了。

有道翻译提供了三种数据格式,这里我们只讲解两种,即xml 和json。

5.1.1 xml 格式

关键代码如下:


 youdaoDic( = orchid 
 = YourApiKey 
 = #39;http://fanyi.youdao.com/fanyiapi.do?keyfrom= #39;.. #39; key= #39;.. #39; type=data doctype=xml version=1.1 q= #39;. = ( = - = - translation- ( == 0 无法进行有效的翻译 

说明:

$xmlStyle = simplexml_load_file($url_youdao); // PHP 函数,将XML 文档载入对象中。

$errorCode = $xmlStyle->errorCode; // 获取错误码

$paras = $xmlStyle->translation->paragraph; // 获取翻译内容

5.1.2 json 格式

关键代码如下:


 public function youdaoDic($word){ $keyfrom = orchid //申请APIKEY时所填表的网站名称的内容
 $apikey = YourApiKey //从有道申请的APIKEY
 //有道翻译-json格式
 $url_youdao = #39;http://fanyi.youdao.com/fanyiapi.do?keyfrom= #39;.$keyfrom. #39; key= #39;.$apikey. #39; type=data doctype=json version=1.1 q= #39;.$word; 
 $jsonStyle = file_get_contents($url_youdao); $result = json_decode($jsonStyle,true); 
 $errorCode = $result[ #39;errorCode #39;]; 
 $trans = #39; #39;; if(isset($errorCode)){ switch ($errorCode){ case 0: $trans = $result[ #39;translation #39;][ #39;0 #39;]; break; case 20: $trans = #39;要翻译的文本过长 #39;; break; case 30: $trans = #39;无法进行有效的翻译 #39;; break; case 40: $trans = #39;不支持的语言类型 #39;; break; case 50: $trans = #39;无效的key #39;; break; default: $trans = #39;出现异常 #39;; break;
 } return $trans;
 }

说明:

$jsonStyle = file_get_contents($url_youdao); // 把整个文件读入一个字符串中
$result = json_decode($jsonStyle,true); // 对JSON 格式的字符串进行编码
$errorCode = $result[ #39;errorCode #39;]; // 获取错误码
$trans = $result[ #39;translation #39;][ #39;0 #39;]; // 获取翻译结果

5.2 百度翻译API

百度翻译API提供UTF-8编码的PHP数组对应的标准JSON字符串,而且提供了 中->英,中->日,英->中,日->中 四种互译,比有道翻译多了一种。

关键代码如下:


 //百度翻译
 public function baiduDic($word,$from= auto ,$to= auto ){ 
 //首先对要翻译的文字进行 urlencode 处理
 $word_code=urlencode($word); 
 //注册的API Key
 $appid= YourApiKey 
 //生成翻译API的URL GET地址
 $baidu_url = http://openapi.baidu.com/public/2.0/bmt/translate?client_id= .$appid. q= .$word_code. from= .$from. to= .$to; 
 $text=json_decode($this- language_text($baidu_url)); $text = $text- trans_result; return $text[0]- 
 //百度翻译-获取目标URL所打印的内容
 public function language_text($url){ if(!function_exists( #39;file_get_contents #39;)){ $file_contents = file_get_contents($url);
 }else{ 
 //初始化一个cURL对象
 $ch = curl_init(); $timeout = 5; //设置需要抓取的URL
 curl_setopt ($ch, CURLOPT_URL, $url); //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //在发起连接前等待的时间,如果设置为0,则无限等待
 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //运行cURL,请求网页
 $file_contents = curl_exec($ch); //关闭URL请求
 curl_close($ch);
 } return $file_contents;
 }

说明:

这里包含了两个函数,baiduDic() 和 language_text()。

baiduDic() 函数:

$word_code=urlencode($word); // 首先对要翻译的文字进行 urlencode 处理
$text=json_decode($this- language_text($baidu_url)); // 调用language_text() 函数获取目标URL所打印的内容,然后对JSON 格式的字符串进行编码
$text = $text- trans_result; //获取翻译结果数组
return $text[0]- //取第一个数组的dst 结果。

language_text() 函数:

判断file_get_contents() 函数是否存在,如果存在,则使用该函数获取URL内容;如果不存在,则使用cURL 工具获取URL内容。具体参见代码。

六、测试

有道翻译-xml 格式:

有道翻译-json 格式:

百度翻译:

【相关推荐】

1. 特别推荐:“php程序员工具箱”V0.1版本下载

2. 微信公众号平台源码下载

3. 微信投票源码下载

以上就是微信开发之翻译功能的步骤详解的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:微信开发之翻译功能的步骤详解;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)