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 session 错误
May 21 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
php中长文章分页显示实现代码
Sep 29 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP简单实现解析xml为数组的方法
May 02 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
laravel-admin 中列表筛选方法
Oct 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操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
Python随机数random模块使用指南
2016/09/09 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
国外软件测试工程师面试题
2016/12/09 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
护士求职推荐信范文
2013/11/23 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
雾霾停课通知
2015/04/24 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
小学生教师节广播稿
2015/08/19 职场文书
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL