微信平台开发学习笔记二(翻译功能的实现)

来源:互联网 发布:华为手机免费网络硬盘 编辑:程序博客网 时间:2024/06/05 17:12

参考http://www.cnblogs.com/mchina/p/3170565.html

不过看看这些前辈写这些东西的时间,就是感慨啊,13年我还没用微信呢

这里只是简单的实现有道的翻译功能,并且是以xml形式,具体的可以看上面的网址


首先要进入有道API入口http://fanyi.youdao.com/fanyiapi

在其中点击调用数据接口,然后填写数据就可以了,这里面的应用名称最好填英文,后面会用到,至于应用的网站,我测试的时候随便填写一个都可以达到效果,所以我觉得没有什么用。

填写完后点击申请,然后会出现API key和keyfrom,然后往下,会告诉你如何接入接口

如下

数据接口

http://fanyi.youdao.com/openapi.do?keyfrom=chdego&key=1347056326&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编码

 only - 可选参数,dict表示只获取词典数据,translate表示只获取翻译数据,默认为都获取

 注: 词典结果只支持中英互译,翻译结果支持英日韩法俄西到中文的翻译以及中文到英语的翻译

errorCode:

 0 - 正常

 20 - 要翻译的文本过长

 30 - 无法进行有效的翻译

 40 - 不支持的语言类型

 50 - 无效的key

 60 - 无词典结果,仅在获取词典结果生效

xml数据格式举例

http://fanyi.youdao.com/openapi.do?keyfrom=chdego&key=1347056326&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>


上面的数据格式是通过给定的网址返回的

具体代码如下

public function youdaoDic($object, $words)    {        $keyfrom = 'chdego';        $apikey = '134056326';        $doctype = 'xml';        // 这个地址返回的是XML文件        $url_youdao = 'http://fanyi.youdao.com/openapi.do?keyfrom=' . $keyfrom . '&key=' . $apikey;        $url_youdao = $url_youdao . '&type=data&doctype=' . $doctype . '&version=1.1&q=' . $words;                // 将XML文件载入对象中        $xmlStyle = simplexml_load_file($url_youdao);                $errorCode = $xmlStyle->errorCode; // 获取错误码        $paras = $xmlStyle->translation->paragraph; // 获取翻译的内容                switch ($errorCode) {            case 0:                return $this->transmitText($object, $paras);                break;            case 20:                return $this->transmitText($object, '要翻译的文本过长');                break;            case 30:                return $this->transmitText($object, '无法进行有效翻译');                break;            case 40:                return $this->transmitText($object, '不支持的语言类型');                break;            case 50:                return $this->transmitText($object, '无效的key');                break;            case 60:                return $this->transmitText($object, '无词典结果,仅在获取词典结果生效');                break;        }    }


最后附上第二次改进后的代码

https://github.com/moluchase/WeChatTest/blob/master/wechattest.php

0 0
原创粉丝点击