Laravel项目中timeAgo字段语言转换的改善方法示例


Posted in PHP onSeptember 16, 2019

前言

在我们过去的Laravel项目中,经常需要用到time_ago这样的字段,并将其转换为我们熟悉的本地语言,可以实现的方式有很多,比如编写一个time_ago的辅助函数将其转换成本地,或采用carbon的diffForHumans函数然后替换成本地语言来实现.

过去我们编写过的代码像这样:

Laravel项目中timeAgo字段语言转换的改善方法示例

这样

Laravel项目中timeAgo字段语言转换的改善方法示例

但是我们需要将其替换成中文、繁体中文、日本或是韩文时,我们就需要编写多个类似的方法如:

time_ago_CN //简体中文
time_ago_HK //繁体中文
time_ago_JP //日文
time_ago_KO //韩文

当项目变得国际化,或者需要支持更多语言时,就显得不太方便.但是最近翻阅carbon的官方文档时,发现carbon是支持多语言的,也就是上面的事情,carbon都实现过了...(这为我们的技术债又添上了一笔)

如果我们想支持中文的话,我们可以为模型上添加以上方法

public function createdAt($locale = 'zh')
{
  Carbon::setLocale($locale);
  return $this->created_at->diffForHumans();
}

然后调用方式如下:

//中文
$user->createdAt(); //9个月前
//简繁体
$user->createdAt('zh_HK'); //9??月前
//日文
$user->createdAt('ja_JP'); //9ヶ月前

如果你想让他变得更通用化,建议封装成辅助函数

function time_ago($time, $locale = 'zh')
{
  $time = $time instanceof Carbon ? $time : Carbon::parse($time);
  Carbon::setLocale($locale);
  return $time->diffForHumans();
}

carbon语言支持:https://carbon.nesbot.com/contribute/translate/

carbon2.0默认在laravel5.8开始支持,如果是低于该版本的话,可以通过以下方式来使用carbon2.0,如laravel5.6

在composer.json中添加以下选项

{
  "require": {
    "nesbot/carbon": "2.24.0 as 1.39.0",
    "kylekatarnls/laravel-carbon-2": "^1.0.0"
  }
}

然后执行composer update来更新我们的依赖项

composer update

最后送上carbon官方文档地址:https://carbon.nesbot.com/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
深入PHP异步执行的详解
Jun 03 PHP
php类常量的使用详解
Jun 08 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
PHP实现货币换算的方法
Nov 29 PHP
必须收藏的php实用代码片段
Feb 02 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
php实现登陆模块功能示例
Oct 20 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 #PHP
PHP实现一个限制实例化次数的类示例
Sep 16 #PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 #PHP
php项目中类的自动加载实例讲解
Sep 12 #PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 #PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 #PHP
PHP实现的文件浏览器功能简单示例
Sep 12 #PHP
You might like
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
vue实现计算器功能
2020/02/22 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
python 布尔操作实现代码
2013/03/23 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
pytorch 求网络模型参数实例
2019/12/30 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
记者岗位职责
2014/01/06 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
银行贷款委托书范本
2014/10/11 职场文书
土地租赁协议书
2015/01/29 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers