ホームページ  >  記事  >  バックエンド開発  >  PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:36:241311ブラウズ

【PHP WeChatパブリックプラットフォーム開発シリーズ】

01. WeChatインターフェースを設定する
02. パブリックプラットフォームのサンプルコード解析
03. サブスクリプションイベント(subscribe)処理
04. 簡易返信機能の開発
05.天気予報機能の開発
06.翻訳機能開発


1. はじめに

前回の記事では、WeChat パブリック プラットフォームの天気予報機能の開発と WeChat パブリック プラットフォームの最初の実用化について紹介しました。次の記事では、読者の参考のために WeChat 翻訳機能を簡単に開発します。

2. アイデア分析

天気をクエリするという考え方は、前の記事と同様です。まず、ユーザーが送信したメッセージに「翻訳」キーワードが含まれているかどうかを判断し、含まれている場合は翻訳対象のコンテンツを抽出します。次に、インターネット上のオープン翻訳 API を呼び出します。

3. 翻訳APIの分析

インターネット上には多くの翻訳 API があり、ニーズに応じて選択できます。ここでは、広く使用されており、比較的優れた翻訳機能を備えている Youdao Translation API と Baidu Translation API を選択します。これら 2 つの API の関連情報を以下で分析します。

3.1 Youdao 翻訳 API

3.1.1 APIアドレス: http://fanyi.youdao.com/openapi

注意: Youdao が提供する API インターフェイスでは、次のテスト中に返される JSON データ形式が間違っています。オンラインで情報を確認してください。正しく翻訳できるアドレスは http://fanyi.youdao.com/fanyiapi です。これに注意してください。

3.1.2 キーを申請する

必要に応じて関連情報を入力してください。この情報は以下で使用されますので、慎重かつ真実に入力してください。

申請が完了すると、APIを利用する際に使用するAPIキーとkeyfromが以下に生成されます。

3.1.3 APIの使用例

3.1.4 データ形式

a.xml形式

http://fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533&type=data&doctype=xml&version=1.1&q=Youdao 翻訳 API はこちらです

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

b. json形式

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

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

3.2 Baidu翻訳API

3.2.1 API アドレス: http://openapi.baidu.com/public/2.0/bmt/translate

3.2.2 APIキーを取得する

Baidu 接続プラットフォームに登録されている開発者によって取得される承認された API キー 詳細については、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 データ形式

Baidu Translation API 応答のデータ形式は、UTF-8 でエンコードされた PHP 配列に対応する標準の JSON 文字列です。

リーリー

trans_result は配列であり、各 {} は段落であり、構造は次のとおりです:

リーリー

段落の結果は、trans_result 配列内の項目です:

リーリー

段落結果の説明:

json_decode 後の形式:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル リーリー PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

4. キーワード判断と翻訳内容の読み取り

翻訳メッセージの形式は「翻訳 + 翻訳対象コンテンツ」なので、最初の 2 つの単語を切り取って「翻訳」キーワードかどうかを判断します。

PHP 関数 mb_substr() を使用してインターセプトします。この関数の使用法については前の記事で説明したので、ここでは繰り返しません。

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

メッセージの先頭からインターセプトを開始し、2 文字をインターセプトして、それが「翻訳」キーワードであるかどうかを判断します。

$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 格式

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
public function youdaoDic($word){

        $keyfrom = "orchid";    //申请APIKEY 时所填表的网站名称的内容
        $apikey = "YourApiKey";  //从有道申请的APIKEY
        
        //有道翻译-xml格式
        $url_youdao = &#39;http://fanyi.youdao.com/fanyiapi.do?keyfrom=&#39;.$keyfrom.&#39;&key=&#39;.$apikey.&#39;&type=data&doctype=xml&version=1.1&q=&#39;.$word;
        
        $xmlStyle = simplexml_load_file($url_youdao);
        
        $errorCode = $xmlStyle->errorCode;

        $paras = $xmlStyle->translation->paragraph;

        if($errorCode == 0){
            return $paras;
        }else{
            return "无法进行有效的翻译";
        }
}
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

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

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

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

5.1.2 json 格式

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
    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;
        
    }
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

$jsonStyle = file_get_contents($url_youdao);  // 把整个文件读入一个字符串中

$result = json_decode($jsonStyle,true);  // 对JSON 格式的字符串进行编码

$errorCode = $result['errorCode'];  // 获取错误码

$trans = $result['translation']['0'];  // 获取翻译结果

5.2 百度翻译API

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

关键代码如下:

PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル
    //百度翻译
    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;
    }
PHP WeChatパブリックプラットフォーム開発 - 翻訳機能開発_PHPチュートリアル

说明:

这里包含了两个函数,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 格式:

百度翻译:

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/739142.htmlTechArticle【PHP微信公众平台开发系列】 01.配置微信接口 02.公众平台示例代码分析 03.订阅事件(subscribe)处理 04.简单回复功能开发 05.天气预报功能...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。