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

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

WBOY
WBOYオリジナル
2016-07-20 11:14:541361ブラウズ

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

2. アイデア分析

天気をクエリするという考え方は前の記事と似ています。まず、ユーザーが送信したメッセージを判断して、メッセージに「翻訳」キーワードが含まれているかどうかを判断する必要があります。含まれている場合は、そのコンテンツを抽出します。翻訳してから、ネットワーク Open Translation 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=&version=1.1&q=Youdao翻訳APIはこちらです

リーリー

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

リーリー

3.2 Baidu翻訳API

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

3.2.2 APIキーを取得する

Baidu Connection Platform への登録後に開発者が取得した承認された 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の使用例

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

リーリー

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

リーリー

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

リーリー

段落結果の説明:

json_decode後のフォーム:

リーリー

翻訳メッセージの形式は「翻訳 + 翻訳対象コンテンツ」であるため、最初の 2 つの単語をインターセプトして「翻訳」キーワードかどうかを判断します。

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

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

「翻訳」という単語のみを入力するかどうかを決定します。この方法で入力すると、翻訳する内容がなく、入力されたメッセージが正しくなくなります。

次に、翻訳するコンテンツを抽出します。

メッセージの先頭の 3 文字目から開始して 202 文字をインターセプトし、インターセプトした内容が翻訳対象のコンテンツになります。

次に、翻訳用の関数を呼び出します。

リーリー

5.1 Youdao翻訳API

データインターフェース:

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

5.1.1 xml 格式

关键代码如下:

<span public</span> <span function</span> youdaoDic(<span $word</span><span ){

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

        </span><span $paras</span> = <span $xmlStyle</span>->translation-><span paragraph;

        </span><span if</span>(<span $errorCode</span> == 0<span ){
            </span><span return</span> <span $paras</span><span ;
        }</span><span else</span><span {
            </span><span return</span> "无法进行有效的翻译"<span ;
        }<br />}</span>

说明:

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

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

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

5.1.2 json 格式

关键代码如下:

    <span public</span> <span function</span> youdaoDic(<span $word</span><span ){

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

        </span><span $result</span> = json_decode(<span $jsonStyle</span>,<span true</span><span );
        
        </span><span $errorCode</span> = <span $result</span>['errorCode'<span ];
        
        </span><span $trans</span> = ''<span ;

        </span><span if</span>(<span isset</span>(<span $errorCode</span><span )){

            </span><span switch</span> (<span $errorCode</span><span ){
                </span><span case</span> 0:
                    <span $trans</span> = <span $result</span>['translation']['0'<span ];
                    </span><span break</span><span ;
                </span><span case</span> 20:
                    <span $trans</span> = '要翻译的文本过长'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 30:
                    <span $trans</span> = '无法进行有效的翻译'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 40:
                    <span $trans</span> = '不支持的语言类型'<span ;
                    </span><span break</span><span ;
                </span><span case</span> 50:
                    <span $trans</span> = '无效的key'<span ;
                    </span><span break</span><span ;
                </span><span default</span>:
                    <span $trans</span> = '出现异常'<span ;
                    </span><span break</span><span ;
            }
        }
        </span><span return</span> <span $trans</span><span ;
        
    }</span>

说明:

把整个文件读入一个字符串中

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

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

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

5.2 百度翻译API

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

关键代码如下:

    <span //</span><span 百度翻译</span>
    <span public</span> <span function</span> baiduDic(<span $word</span>,<span $from</span>="auto",<span $to</span>="auto"<span ){
        
        </span><span //</span><span 首先对要翻译的文字进行 urlencode 处理</span>
        <span $word_code</span>=<span urlencode</span>(<span $word</span><span );
        
        </span><span //</span><span 注册的API Key</span>
        <span $appid</span>="<span YourApiKey</span>"<span ;
        
        </span><span //</span><span 生成翻译API的URL GET地址</span>
        <span $baidu_url</span> = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".<span $appid</span>."&q=".<span $word_code</span>."&from=".<span $from</span>."&to=".<span $to</span><span ;
        
        </span><span $text</span>=json_decode(<span $this</span>->language_text(<span $baidu_url</span><span ));

        </span><span $text</span> = <span $text</span>-><span trans_result;

        </span><span return</span> <span $text</span>[0]-><span dst;
    }
        
    </span><span //</span><span 百度翻译-获取目标URL所打印的内容</span>
    <span public</span> <span function</span> language_text(<span $url</span><span ){

        </span><span if</span>(!<span function_exists</span>('file_get_contents'<span )){

            </span><span $file_contents</span> = <span file_get_contents</span>(<span $url</span><span );

        }</span><span else</span><span {
                
            </span><span //</span><span 初始化一个cURL对象</span>
            <span $ch</span> =<span  curl_init();

            </span><span $timeout</span> = 5<span ;

            </span><span //</span><span 设置需要抓取的URL</span>
            curl_setopt (<span $ch</span>, CURLOPT_URL, <span $url</span><span );

            </span><span //</span><span 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上</span>
            curl_setopt (<span $ch</span>, CURLOPT_RETURNTRANSFER, 1<span );

            </span><span //</span><span 在发起连接前等待的时间,如果设置为0,则无限等待</span>
            curl_setopt (<span $ch</span>, CURLOPT_CONNECTTIMEOUT, <span $timeout</span><span );

            </span><span //</span><span 运行cURL,请求网页</span>
            <span $file_contents</span> = curl_exec(<span $ch</span><span );

            </span><span //</span><span 关闭URL请求</span>
            curl_close(<span $ch</span><span );
        }

        </span><span return</span> <span $file_contents</span><span ;
    }</span>

说明:

baiduDic() 函数:

language_text() 函数:

有道翻译-xml 格式:

有道翻译-json 格式:

百度翻译:

注意:该翻译功能放在SAE上能够正常运行,但在BAE上运行不成功,各位有兴趣自行测试一下。

请到QQ群213260412共享里下载使用。

请关注 卓锦苏州 微信公众帐号,卓锦苏州 基于SAE 平台开发,针对于主流的微信功能进行开发测试。

您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。

1. 登录微信客户端,朋友们 -> 添加朋友 -> 搜号码 -> zhuojinsz,查找并关注。

2. 扫描二维码:

卓锦苏州功能列表。

 


We Believe, Great People Share Knowledge...

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/440249.html技術記事前回の記事では、WeChatパブリックプラットフォームの天気予報機能の開発を紹介し、WeChatパブリックプラットフォームの最初の実用化を実現しました。次の記事では、WeChatを翻訳していきます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。