ホームページ >バックエンド開発 >PHPチュートリアル >WeChatパブリックプラットフォーム開発(6)翻訳機能開発_PHPチュートリアル
前の記事では、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...
。