程序需要的翻译工具,要自动分割单词,如: 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; }