Heim >WeChat-Applet >WeChat-Entwicklung >Detaillierte Erläuterung der Schritte zur Entwicklung der Übersetzungsfunktion in WeChat

Detaillierte Erläuterung der Schritte zur Entwicklung der Übersetzungsfunktion in WeChat

Y2J
Y2JOriginal
2017-05-13 14:44:572169Durchsuche

1. Einführung

Der vorherige Artikel stellte die Entwicklung der Wettervorhersagefunktion der öffentlichen WeChat-Plattform vor und implementierte den WeChat öffentliche Plattform Als erste praktische Anwendung werden wir im folgenden Artikel kurz die WeChat-Übersetzungsfunktion als Referenz für die Leser entwickeln.

2. Ideenanalyse

Die Idee, das Wetter abzufragen, ähnelt dem vorherigen Artikel. Zuerst müssen wir die Nachrichten beurteilen Von Benutzern gesendet. Ob die Nachricht das Schlüsselwort „Übersetzung“ enthält. Wenn ja, extrahieren Sie den zu übersetzenden Inhalt und rufen Sie dann die offene Übersetzungs-API im Internet auf, um die relevante Übersetzung zu erhalten.

3. Übersetzungs-API-Analyse

Es gibt viele Übersetzungs-APIs im Internet, die Sie je nach Bedarf auswählen können braucht. Hier wählen wir Youdao Translation API und Baidu TranslationAPI, die weit verbreitet sind und über relativ gute Übersetzungsfunktionen verfügen. Die relevanten Informationen dieser beiden APIs werden im Folgenden analysiert.

3.1 Youdao-Übersetzungs-API

3.1.1 API-Adresse: fanyi.youdao.com/openapi

Hinweis: Die API Schnittstelle , bereitgestellt von Youdao, während des folgenden Tests ist das zurückgegebene json-Datenformat falsch. Überprüfen Sie die Informationen online und die Adresse, die korrekt übersetzt werden kann, ist fanyi.youdao.com/. Fanyiapi, achten Sie darauf.

3.1.2 Beantragen Sie den Schlüssel

Geben Sie die erforderlichen Informationen ein. Diese Informationen werden unten verwendet. Füllen Sie sie daher bitte sorgfältig und wahrheitsgemäß aus.

Nach der Bewerbung werden unten der API-Schlüssel und der Keyfrom generiert, die bei der Verwendung der API verwendet werden.

3.1.3 API-Nutzungsbeispiele

3.1.4 Datenformat

a Format

fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533 &type=data&doctype=xml&version=1.1&q=Dies ist die Youdao-Übersetzungs-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-Format

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


{
    "errorCode":0
    "query":"翻译",
    "translation":["translation"], // 有道翻译
    "basic":{ // 有道词典-基本词典
        "phonetic":"fān yì",
        "explains":[
            "translate",
            "interpret"
        ]
    },
    "web":[ // 有道词典-网络释义
        {
            "key":"翻译",
            "value":["translator","translation","translate","Interpreter"]
        },
        {...}
    ]
}

3.2 Baidu Translate API

3.2.1 API-Adresse: openapi.baidu.com/public/2.0/bmt/translate

3.2.2 API-Schlüssel erhalten

Der autorisierte API-Schlüssel, den der Entwickler nach der Registrierung auf der Baidu Connection Platform erhalten hat. Weitere Informationen finden Sie unter: 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-Nutzungsbeispiele

3.2.4 Datenformat

Das Datenformat der Baidu Translation API Die Antwort ist UTF. Das 8-codierte PHP-Array entspricht dem Standard-JSONString.


{
    “from”:”zh”,
    “to”:”en”,
    “trans_result”:[]
}

trans_result ist ein Array, wobei jedes {} ein Absatz ist und die Struktur wie folgt ist:


trans_result: [
{},
{},
{}
]

Das Absatzergebnis ist ein Element im trans_result-Array:


{
“src”:””,
“dst”:””
}

Beschreibung des Absatzergebnisses:

Das Formular nach json_decode:


{
    "from": "en",
    "to": "zh",
    "trans_result": [
        {
            "src": "today",
            "dst": "今天"
        }
    ]
}

4. Stichwortbeurteilung und Lesen des zu übersetzenden Inhalts

Das Format der Übersetzungsnachricht ist „Übersetzung + zu übersetzender Inhalt“. Fangen Sie daher zunächst die ersten beiden Wörter ab, um festzustellen, ob es sich um das Schlüsselwort „Übersetzung“ handelt.

使用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. 微信投票源码下载

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Entwicklung der Übersetzungsfunktion in WeChat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn