首页 微信小程序 微信开发 微信开发之翻译功能的步骤详解

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

May 13, 2017 pm 02:44 PM

一、简介

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

二、思路分析

和上一篇查询天气的思路差不多,首先要对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果含有,则提取待翻译内容,然后调用网络上开放的翻译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]->dst;
    }        
    //百度翻译-获取目标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;  //取第一个数组的dst 结果。
登录后复制

language_text() 函数:

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

六、测试

有道翻译-xml 格式:

有道翻译-json 格式:

百度翻译:

【相关推荐】

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

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

3. 微信投票源码下载

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24
wps翻译功能怎么用_wps翻译功能使用方法 wps翻译功能怎么用_wps翻译功能使用方法 Mar 27, 2024 pm 04:46 PM

1、首先我们打开手机wpsoffice。2、然后点击应用。3、点击图片翻译即可。方法二1、首先我们打开手机wpsoffice。2、打开需要翻译的文档,点击左下角的工具。3、点击审阅,点击翻译即可

百度浏览器翻译功能在哪 百度浏览器翻译功能在哪 Feb 27, 2024 pm 02:28 PM

百度浏览器翻译功能在哪?手机百度浏览器作为一款功能强大的浏览器,内置了许多实用的辅助功能,如网页翻译功能。这一功能能够将网页上的英文等外语翻译成中文,对于经常访问非中文网站的用户来说极其实用。那么,如何在手机百度浏览器中使用网页翻译功能呢?接下来,我将分享详细的手机百度浏览器网页翻译功能使用方法,让有需要的朋友们能够更好地利用这一功能。手机百度浏览器网页翻译功能使用方法1、首先打开手机中的百度浏览器,在浏览器底部点击由三条横线组成的“菜单”图标;2、此时界面下方会弹出百度浏览器的菜单窗口,我们在

Edge浏览器翻译功能不见了怎么找回? Edge浏览器翻译功能不见了怎么找回? Mar 13, 2024 pm 08:40 PM

  在使用浏览器浏览网页的时候,可能会需要访问一些外文网站,完全看不懂,想要打开翻译发现自带的翻译不见了,还能找回吗?下面小编就给大家分享找回翻译功能的方法。  Edge浏览器怎么设置翻译?首先,启动Edge浏览器,然后在右上角找到由三个点组成的“更多选项”图标,并点击它。  2、点击之后会在下方弹出Edge浏览器的菜单窗口,在窗口中点击打开“设置”页面。  3、这时会进入Edge浏览器的设置页面,在页面左侧的导航菜单中可以看到“语言”这一项,点击切换到该设

如何使用excel中的翻译功能 如何使用excel中的翻译功能 Mar 20, 2024 pm 12:40 PM

平时工作难免会跟excel打交道,有时候打开表格会遇到若干语言,这时大多数人都会选择去网上查、用有道、金山词霸等等翻译。其实,excel自身是可以翻译的,遇到看不懂的语言,不用费劲地去网上查的,直接在excel中翻译就可以了,这样大大节省了时间,也提高了工作效率。那么,今天就跟大家聊一聊如何使用excel中的翻译功能吧!1.打开excel,在上方菜单栏中找到“审阅”按钮,用鼠标点击一下。2.下方很清楚的看到“翻译”二字,点击“翻译”,会看到表格的右方出现了“信息搜索”一栏。3.想要把“生活”翻译

如何解决谷歌浏览器无法启动翻译功能的问题 如何解决谷歌浏览器无法启动翻译功能的问题 Jan 31, 2024 pm 02:00 PM

谷歌浏览器翻译功能启动失败怎么办?很多小伙伴在使用谷歌浏览器的时候,会发现其翻译功能有时会启动失败,这非常影响我们正常使用。通常,翻译功能启动失败一般是因为内部设置的问题,当然也不排除浏览器故障等因素,那么,我们究竟该怎么解决翻译功能启动失败这个问题呢?下面就由小编为大家带来谷歌浏览器翻译功能启动失败解决方法。谷歌浏览器翻译功能启动失败解决方法1.打开谷歌浏览器2.进入后点击上方的三个点3.再展开的选项中选择设置4.进入后选择语言5.点击添加语言6.添加英语7.勾选询问是否翻译此语言的网页8.打

edge浏览器怎么设置英语网页弹出翻译功能 edge浏览器怎么设置英语网页弹出翻译功能 Mar 27, 2024 pm 04:16 PM

  edge浏览器怎么设置英语网页自动翻译功能?大家应该知道,使用edge浏览器浏览器浏览网页的时候,用户可以在页面空白处点击鼠标右键选择翻译为中文,但是如果是想遇到英文网站进行自动翻译,那么就需要进行设置了。  edge浏览器设置英语网页自动翻译中文的方法首先,我们需在电脑上启动Edge浏览器,接着在浏览器页面的右上角找到并点击“…”按钮,然后从下拉菜单中选择“设置”选项。  2、第二步,进入Edge浏览器的设置页面之后,我们在左侧列表中点击打开“语言”选项。  3、第三步,进入

PHP微信开发:如何实现消息加密解密 PHP微信开发:如何实现消息加密解密 May 13, 2023 am 11:40 AM

PHP是一种开源的脚本语言,广泛应用于Web开发和服务器端编程,尤其在微信开发中得到了广泛的应用。如今,越来越多的企业和开发者开始使用PHP进行微信开发,因为它成为了一款真正的易学易用的开发语言。在微信开发中,消息的加密和解密是一个非常重要的问题,因为它们涉及到数据的安全性。对于没有加密和解密方式的消息,黑客可以轻松获取到其中的数据,对用户造成威胁

怎么让谷歌浏览器自动翻译成中文 怎么让谷歌浏览器自动翻译成中文 Mar 19, 2024 am 09:13 AM

怎么让谷歌浏览器自动翻译成中文?谷歌浏览器是一款超级好用的浏览器软件,这款浏览器具有快速、安全、稳定的特性,非常适合用户工作、学习和娱乐,在这款浏览器里我们会访问到纯英文的页面,这个时候可以开启自动翻译功能,轻松帮助大家翻译页面内容。接下来小编就给大家带来谷歌浏览器开启自动翻译功能教程一览,希望能够对大家有所帮助。谷歌浏览器开启自动翻译功能教程一览首先打开电脑上的谷歌浏览器,然后将鼠标移动到屏幕右上角的三个点处,点击这个图标。2.随后,即可在这个三个点图标的位置下方即可出现一个菜单选项,将该菜单

See all articles