0

0

Thinkphp翻译接口的使用及其优化

咔咔

咔咔

发布时间:2020-08-19 16:53:44

|

3349人浏览过

|

来源于php中文网

原创

本文给大家提供一个免费的翻译接口,有空时可以试试还是很秀的哈!

前言

项目中必要的数据是需要写语言包的,就像那种几百年不变的数据,但是有一类数据就是在项目的运行的过程中就在一直变化。

对于这样的数据我们写成语言包显然是不合适的,所以我们就需要借助翻译接口来实现我们的需求了。

一、翻译接口简单介绍

先看一张图吧!看一下这个翻译接口在我们的项目中如何运用。

在这里插入图片描述
在这里插入图片描述

这个接口总共有4个参数,分别为a、f、t、w。

这四个参数分别的意思为,a是固定的值就是fy。

f指的是翻译的语种。

t指的是需要翻译成我们需要的语种。

w指的是需要翻译的数据。

二、项目实战

项目需求就是把左边的框出来的在切换语言后跟随这语言变动。首先说明一下,在上边的这些文字不是手动写上去的,html文件也是不存在的。是在数据库注释里边配置的。

下图就是我们的数据库创建。为什么这么创建,这样创建有什么好处,我就不提了,每个团队都有自己的想法哈!

接着我们来到正题

使用的代码也就这点,接口地址就是上边postman里边的地址,后边只需要传输一个需要翻译的数据即可。

本文实现的数据就是上图左侧的文字,也就是我们从数据库中把注释读出来然后根据一定的规则把这个名字就直接作为添加或者修改时的列即可。

那么就只需要把这个注释直接给追加到翻译接口后边即可。给你提供一个php发起curl请求的代码

public function translateRequest($url, $data=array()){

$ch = curl_init();//初始化
//curl_setopt();//设置
//设置
curl_setopt($ch,CURLOPT_URL,$url); //需要获取的 URL 地址
curl_setopt($ch,CURLOPT_HEADER,0); //启用时会将头文件的信息作为数据流输出, 此处禁止输出头信息
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //获取的信息以字符串返回,而不是直接输出
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30); //连接超时时间
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

//避免https 的ssl验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

if($data){
curl_setopt($ch, CURLOPT_POST, 1); //post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//post参数
}

//执行
$data = curl_exec($ch);//执行 不输出 内容返回给它
//判断是否请求成功

if(curl_errno($ch)){//错误码
echo 'curl error: '.curl_error($ch);//错误信息
}

$response = curl_getinfo($ch);

switch($response['http_code']){
case 200:
return $data;
break;
default:
exit('程序异常');
}

curl_close($ch);//关闭
}

经过测试后看看效果,效果是实现了,但是你们可以私下试试哈!翻译一组数据时速度还行,但是翻译几个数据时就有点慢了。

添加页面打开的时间大概需要3-5S,这肯定是不可以的,所以我们需要想一个办法来解决这个问题。在这里插入图片描述

三、优化翻译速度

在第二步中,咔咔做到最后是发现翻译的速度是有点慢的,碰到字段多的更是慢的离谱。于是咔咔就想了一个办法。

这些数据是之前是一个一个翻译出来的,那么我们是不是也可以一次性给翻译出来,然后我们在来自己组装数据。在这里插入图片描述

带着这个想法我们开始实施。

这几行代码最终实现的就是把所有的字段注释放在一起,并且用“,”隔开在这里插入图片描述打印出来的数据可以看一下,out字段就是翻译出来的数据,其实想都不用想一次翻译肯定比6次翻译速度快。

然后拿着这组数据在转化成数组在重新组装到原数据里就ok了。在这里插入图片描述这里有个小问题,可以一起关注一下。中文打印出来的是原始数据里边的,英文是数据经过处理的。

很明显可以看到返回的英文结果跟原始数据对不上。在这里插入图片描述这里的处理也是比较简单,如果你有更好的方案评论区见

处理方式在获取数据库字段中文注释之前把对应的索引保存到$needkey

然后重新定义一个变量fanal,让fanal的索引等于needkey的v,而对应的值就是result[needkey的k]

四、总结

这样一个翻译接口的使用就完成了,项目截图就不给大家展示了哈!

把多次翻译改为一次翻译,提升翻译速度,毕竟是请求别人的东西,肯定没有我们自己重组数据快。

坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在诺大互联网中咔咔的文章能带给你一丝丝帮助。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

84

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

24

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

56

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号