Laravel框架实现调用百度翻译API功能示例


Posted in PHP onMay 30, 2019

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
PHP图片上传代码
Nov 04 PHP
CI框架Session.php源码分析
Nov 03 PHP
PHP+MYSQL中文乱码问题
Jul 01 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
php微信公众号开发之秒杀
Oct 20 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 #PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 #PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 #PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 #PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 #PHP
PHP微信网页授权的配置文件操作分析
May 29 #PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 #PHP
You might like
PHP 模板高级篇总结
2006/12/21 PHP
PHP 变量的定义方法
2010/01/26 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
vue内置指令详解
2018/04/03 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
机器学习python实战之决策树
2017/11/01 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
拖欠货款起诉状
2015/05/20 职场文书
小组口号霸气押韵
2015/12/24 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
Django实现聊天机器人
2021/05/31 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python