程序需要的翻译工具,要自动分割单词,如: SourceCodeExtension 或 Event_Subscriber_Interface,为此,只能自己写代码分割一下,然后调用翻译接口.
先看效果吧.
然后集成到我的工具包里的效果
自己去注册,然后开通通用翻译接口,下载个 demo,就能使用了.
<?php define("CURL_TIMEOUT", 10); define("URL", "http://api.fanyi.baidu.com/api/trans/vip/translate"); define("APP_ID", "20212"); //APPID define("SEC_KEY", "LKYGG");//密钥 print_r(translate(Data::string('__Event_SubscriberInterface__')->toWord(), 'en', 'zh')); class Data { protected static $string = ''; public static function string($string){ self::$string = $string; return new static(); } public function toWord(string $delimiter=' ') :string {
$string = self::$string; if(strpos($string, '_') !== false ){ $string = str_replace('_', ' ', $string); } return strtolower(trim(preg_replace(['/([A-Z])/', '/s+/'], [' ${1}', $delimiter], $string))); } } //翻译入口 function translate($query, $from, $to) { $args = array( 'q' => $query, 'appid' => APP_ID, 'salt' => rand(10000, 99999), 'from' => $from, 'to' => $to, ); $args['sign'] = buildSign($query, APP_ID, $args['salt'], SEC_KEY); $ret = call(URL, $args); $ret = json_decode($ret, true); return $ret; } //加密 function buildSign($query, $appID, $salt, $secKey) { $str = $appID . $query . $salt . $secKey; $ret = md5($str); return $ret; } //发起网络请求 function call($url, $args = null, $method = "post", $testflag = 0, $timeout = CURL_TIMEOUT, $headers = array()) { $ret = false; $i = 0; while($ret === false){ if($i > 1) break; if($i > 0){ sleep(1); } $ret = callOnce($url, $args, $method, false, $timeout, $headers); $i++; } return $ret; } function callOnce($url, $args = null, $method = "post", $withCookie = false, $timeout = CURL_TIMEOUT, $headers = array()) { $ch = curl_init(); if($method == "post"){ $data = convert($args); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_POST, 1); }else{ $data = convert($args); if($data){ if(stripos($url, "?") > 0){ $url .= "&$data"; }else{ $url .= "?$data"; } } } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if(!empty($headers)){ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } if($withCookie){ curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE); } $r = curl_exec($ch); curl_close($ch); return $r; } function convert(&$args) { $data = ''; if(is_array($args)){ foreach($args as $key => $val){ if(is_array($val)){ foreach($val as $k => $v){ $data .= $key . '[' . $k . ']=' . rawurlencode($v) . '&'; } }else{ $data .= "$key=" . rawurlencode($val) . "&"; } } return trim($data, "&"); } return $args; }