搜尋
首頁微信小程式微信開發微信開發之翻譯功能的步驟詳解

一、介紹

上一篇文章介紹了微信公眾平台天氣預報功能的開發,實現了微信公眾平台的第一個實際應用,在接下來的這篇文章中,我們將對微信翻譯功能進行簡單開發,以供讀者參考。

二、思路分析

和上一篇查詢天氣的思路差不多,首先要對用戶發送過來的消息進行判斷,判斷訊息是否含有「翻譯」關鍵字,如果含有,則提取待翻譯內容,然後呼叫網路上開放的翻譯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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

北端:融合系統,解釋
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
4 週前By尊渡假赌尊渡假赌尊渡假赌
<🎜>掩蓋:探險33-如何獲得完美的色度催化劑
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用