java 单机接口限流处理方案
425
2022-06-06
本文实例讲述了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程序设计有所帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~