zoukankan      html  css  js  c++  java
  • 微信公众平台开发5:翻译功能

    思路分析

    首先对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果有,则提取翻译内容,然后调用网络上开放的翻译API 进行翻译。

    我们用有道翻译API:http://fanyi.youdao.com/openapi?path=data-mode

    记下申请时的API key 和keyfrom

    14370499012_56ecd40cd5_o.jpg

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

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

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

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

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

    从消息的开头开始,截掉末尾的两个字符,判断是否只输入“翻译”两字,若没有翻译内容,则输入的消息也不正确。

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

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

    从消息的开头第3个字符开始截取,截取200个字符(API要求字符长度不能超过200),截取出来的即为待翻译内容。注意要翻译的文本,必须是UTF-8编码,需要进行urlencode编码,不然可能返回60错误。

    接着调用函数进行翻译。

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

    具体实现

    数据接口:

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

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

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

    xml 格式

    publicfunction youdaoDic($word){           $keyfrom="orchid";//申请APIKEY时填的网站名称内容
        $apikey="YourApiKey";//从有道申请的APIKEY           //有道翻译-xml格式
    $url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=xml&version=1.1&q='.$word;           $xmlStyle=simplexml_load_file($url_youdao);           $errorCode=$xmlStyle->errorCode;           $paras=$xmlStyle->translation->paragraph;// 获取翻译内容           if($errorCode==0){return$paras;}else{return"无法进行有效的翻译";}}

    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":["良好","善","美好"]},         {...}]} 代码:
    publicfunction youdaoDic($word){           $keyfrom="orchid";//申请APIKEY时所填的网站名称内容
    $apikey="YourApiKey";//从有道申请的APIKEY           //有道翻译-json格式
    $url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=json&version=1.1&q='.$word;           $jsonStyle=file_get_contents($url_youdao);           $result=json_decode($jsonStyle,true);// 为 TRUE 时,返回 array           $errorCode=$result['errorCode'];           $trans='';           if(isset($errorCode)){//               switch($errorCode){case0:$trans=$result['translation']['0'];break;case20:$trans='要翻译的文本过长';break;case30:$trans='无法进行有效的翻译';break;case40:$trans='不支持的语言类型';break;case50:$trans='无效的key';break;default:$trans='出现异常';break;}}return$trans;       }

    与有道词典的翻译对比如下图所示:

    14368655671_01c315a5c3_o.png

    14370499272_1109779c16_o.png

    14185366638_a452b9f693_o.png

    14370499102_cb342dee97_o.png

    14185523317_85122ee8ce_o.png

    14185331629_34c76c736e_o.png


    艺搜参考

    在线格式化json

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

    http://www.crazyant.net/920.html

    http://stackoverflow.com/questions/8068220/check-if-array-is-null-or-not-in-php

  • 相关阅读:
    pgspider sqlite mysql docker 镜像
    pgspider docker 镜像
    pgspider基于pg 的高性能数据可视化sql 集群引擎
    diesel rust orm 框架试用
    golang 条件编译
    Performance Profiling Zeebe
    bazel 学习一 简单java 项目运行
    一个好用node http keeplive agnet
    gox 简单灵活的golang 跨平台编译工具
    mailhog 作为smtp server mock工具
  • 原文地址:https://www.cnblogs.com/elesos/p/5924506.html
Copyright © 2011-2022 走看看