本文實例講述了Laravel框架實現調用百度翻譯API功能。分享給大家供大家參考,具體如下:
前言
最近在弄的視頻下載網站,弄seo是人工去google翻譯,然后再保存,這樣下去很累啊,然后就想到讓程序自己去翻譯然后保存不就行了嘛,自己主要把中文的seo搞定就OK了。說干就干,最先去找了google 翻譯 api,可惜要綁定信用卡,太麻煩,放棄,然后找到百度翻譯API,雖然支持的國外語言不多,但最基本的國家也都有了。ok,開始擼碼。
代碼說明
使用的是Laravel框架,語言包存放在resources/lang目錄下。代碼功能主要是讀取lang下所有的文件,然后讀取指定的文件(zh-CN),所里面的數據循環出來,調用百度API,再將翻譯后的結果保存下來。
上碼
static function translate($_query,$_src_lang,$_desc_lang){ #Trans:就是百度提供的PHP類 $_res = Trans::translate($_query,$_src_lang,$_desc_lang); $_result = @$_res["trans_result"][0]["dst"]; return $_result;}#google 和 百度的不同.. const LANG=[ "de" => "de", "en" => "en", "es" => "spa", "fr" => "fra", "it" => "it", "ja" => "jp", "ko" => "kor", "pt" => "pt", "ru" => "ru", "th" => "th", "vi" => "vie", "zh-CN" => "zh", "zh-TW" => "cht", "id" => "en", "ms" => "en", "my" => "en",];static function startTrans($_trans_name='down.php',$_lang_name='zh-CN'){ $_lang_dir = Storage::disk('lang'); $_dirs = $_lang_dir->directories(); $_transArr = self::_getSrcTransArr($_lang_name,$_trans_name); foreach($_dirs as $_lang){ #當然,要跳過指定的文件 if($_lang == $_lang_name){ continue; } $_tran_path = "$_lang/{$_trans_name}"; if(!$_lang_dir->exists($_tran_path)){ #這里直接touch就行了 $_lang_dir->copy("template.php",$_tran_path); } $_trans_file_arr = []; #下面是翻譯工作 foreach($_transArr as $key=>$_row){ $_trans_file_arr[$key] = self::translate($_row,self::LANG[$_lang_name],self::LANG[$_lang]); } #將數組寫入文件 $str=''.PHP_EOL.'return ' . var_export($_trans_file_arr,true).";"; file_put_contents(resource_path("lang/{$_tran_path}"), $str); }}#讀取指定文件數組private static function _getSrcTransArr($_dir_name,$_trans_name){ $_src_file = Storage::disk('lang')->files($_dir_name); $_out_data = []; foreach($_src_file as $_file){ if(stripos($_file,$_trans_name)!==false){ $_out_data = include_once (resource_path("lang/{$_file}")); break; } } return $_out_data;}
希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選