>  기사  >  위챗 애플릿  >  WeChat 번역 기능 개발 단계에 대한 자세한 설명

WeChat 번역 기능 개발 단계에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-13 14:44:572069검색

1. 소개

이전 글에서는 위챗 공개 플랫폼의 일기예보 기능 개발을 소개하고 위챗을 구현했다. 공개 플랫폼 첫 번째 실제 응용 프로그램인 다음 기사에서는 독자의 참고를 위해 WeChat 번역 기능을 간략하게 개발하겠습니다.

2. 아이디어 분석

날씨를 묻는 아이디어는 이전 글과 비슷합니다. 먼저 메시지를 판단해야 합니다. 메시지에 "번역" 키워드가 포함되어 있는지 여부, 번역할 내용을 추출한 후 해당 번역을 위해 인터넷에서 공개 번역 API를 호출합니다.

3. 번역 API 분석

인터넷에는 다양한 번역 API가 있으므로 원하는 대로 선택할 수 있습니다. 자신의 필요. 여기서는 널리 사용되고 상대적으로 좋은 번역 기능을 가지고 있는 Youdao 번역 API와 바이두 번역API를 선택합니다. 이 두 API의 관련 정보는 아래에서 분석됩니다.

3.1 Youdao 번역 API

3.1.1 API 주소: fanyi.youdao.com/openapi

참고: Youdao에서 제공하는 API 인터페이스, 다음 테스트에서 반환된 json 데이터 형식이 잘못되었습니다. 온라인에서 정보를 확인하고 올바르게 번역할 수 있는 주소는 fanyi.youdao.com/입니다. fanyiapi, 이것에 주목하세요.

3.1.2 키 신청

해당 사항을 필수로 입력해 주세요. 해당 정보는 아래에 사용될 예정이니, 신중하고 사실대로 입력해 주시기 바랍니다.

적용 후 아래와 같이 API key와 keyfrom이 생성되며, 이는 API 사용시 사용됩니다.

3.1.3 API 사용예

3.1.4 데이터 형식

a. 형식

fanyi.youdao.com/openapi.do?keyfrom=orchid&key=1008797533 &type=data&doctype=xml&version=1.1&q=Youdao 번역 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 형식

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 번역 API

3.2.1 API 주소: openapi.baidu.com/public/2.0/bmt/translate

3.2 . 2 API 키 얻기

바이두 연결 플랫폼에 등록한 후 개발자가 획득한 승인된 API 키입니다. 자세한 내용은 http://developer.baidu.com/wiki/index.php? 제목=%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문자열에 해당합니다.


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

trans_result는 배열이고 각 {}는 단락이며 구조는 다음과 같습니다.


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

단락 결과는 trans_result 배열의 항목입니다:


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

단락 결과 설명:

json_decode 이후 양식 :


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

4. 키워드 판단 및 번역할 내용 읽기

번역 메시지의 형식은 "번역 + 번역할 내용"이므로 먼저 처음 두 단어를 가로채서 "번역" 키워드인지 확인합니다.

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

위 내용은 WeChat 번역 기능 개발 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.