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使用者状态管理功能的应用
Oct 09 PHP
PHP编程风格规范分享
Jan 15 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
PHP链表操作简单示例
Oct 15 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
Jul 03 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 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
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
实例讲解PHP表单处理
2019/02/15 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
Python读写Excel表格的方法
2021/03/02 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
校班主任推荐信范文
2013/12/03 职场文书
企业宗旨标语
2014/06/10 职场文书
司机工作自我鉴定
2014/09/19 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
毕业实习计划书
2015/01/16 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
复兴之路观后感
2015/06/02 职场文书
感恩老师主题班会
2015/08/12 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
MongoDB balancer的使用详解
2021/04/30 MongoDB
python APScheduler执行定时任务介绍
2022/04/19 Python