ホームページ > バックエンド開発 > PHPチュートリアル > PHPで開発された翻訳機能 WeChat

PHPで開発された翻訳機能 WeChat

*文
リリース: 2023-03-18 20:06:01
オリジナル
1657 人が閲覧しました

この記事では主にPHP WeChat開発における翻訳の簡単な実装に関する関連情報を詳しく紹介します。興味のある方は参考にしてください。お役に立てれば幸いです。

まず、Youdao Translation API 公式 Web サイトにアクセスしてキーを申請する必要があります: http://fanyi.youdao.com/openapi?path=data-mode
キーを取得したら、 API からクエリされたデータ (json または XML を返します。個人の好みによって異なります。ここでは json を使用します)
以下では、responseMsg メソッドで翻訳を実装するコードを直接指定します。初めて WeChat API にアクセスし、このメソッドが何をするのか理解できない場合は、PHP WeChat Development Text 自動返信をクリックしてください

public function responseMsg(){
   //get post data, May be due to the different environments
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据

  //extract post data
 if(!empty($postStr)){
    
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"(订阅号)的公众号id
   $keyword = trim($postObj->Content); //用户发给订阅号的消息内容
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型:文本
   $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";

   if($postObj->MsgType == &#39;event&#39;){ //如果XML信息里消息类型为event
    if($postObj->Event == &#39;subscribe&#39;){ //如果是订阅事件
     $contentStr = "欢迎";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
     echo $resultStr;
     exit();
    }
   }

   $which = mb_substr($keyword, 0, 2, &#39;UTF-8&#39;);//获取要返回什么样的信息

   if($which== "翻译"){ //如果要进行翻译
    $fanyi = $which;
    $search = str_replace($fanyi, &#39;&#39;, $keyword); //要翻译的关键字

    $key = ""; //在有道API申请的key
    $keyfrom = ""; //与key对应
    $url = &#39;http://fanyi.youdao.com/openapi.do?keyfrom=&#39; . $keyfrom . &#39;&key=&#39; . $key . &#39;&type=data&doctype=json&version=1.1&q=&#39; . urlencode($search);//调用有道翻译API
    
    $json = file_get_contents($url);//也可以用curl来获取
    $res = json_decode($json, true);

    /**
     * 以下从返回的数据中提取翻译结果
     */
    $contentStr = &#39;【查询】&#39; . $res[&#39;query&#39;] . "\n";
    $contentStr .= "【翻译】\n" . $res[&#39;translation&#39;][0] . "\n";

    $str = &#39;&#39;;
    foreach($res[&#39;basic&#39;][&#39;explains&#39;] as $v){
     $str .= $v . "\n";
    }
    $contentStr .= "【基本释义】\n" . $str;


    if(isset($res[&#39;web&#39;])){

     foreach($res[&#39;web&#39;] as $kk=>$vv){
      sort($vv);
      $res[&#39;web&#39;][$kk] = $vv; //调节字段顺序
     }

     $str = &#39;&#39;;
     foreach($res[&#39;web&#39;] as $v){
      foreach($v as $k2=>$v2){
       if($k2 == 0){
        $str .= "【". $v2 ."】\n";
       }else{
        foreach($v2 as $v3){
         $str .= $v3 ."\n";
        }
       }
      }
     }
     $contentStr .= "【网络释义】\n" . $str;     
    }

    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit(); 

   }
ログイン後にコピー

注: フォローしているサブスクリプション アカウントによって返される情報には、改行して「n」を使用します。 Web サイトのスペースでコードを変更し、「翻訳ハンバーガー」などのメッセージをサブスクリプション アカウントに送信すると、サブスクリプション アカウントは Youdao の API を呼び出して、中国語と英語の間で翻訳できる翻訳結果を返します。文。関連する推奨事項:tokenトークンを確認し、コンテンツに返信し、php wechatパブリックアカウントのメッセージをプッシュする方法返信する

以上がPHPで開発された翻訳機能 WeChatの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート