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 多维数组排序实现代码
Aug 05 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
CI框架给视图添加动态数据
Dec 01 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php 文件缓存函数
2011/10/08 PHP
PHP使用数组实现队列
2012/02/05 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
js打造数组转json函数
2015/01/14 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
react native 仿微信聊天室实例代码
2019/09/17 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
Python的面向对象思想分析
2015/01/14 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
python字典key不能是可以是啥类型
2020/08/04 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
总结30个CSS3选择器
2017/04/13 HTML / CSS
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
什么是URL
2015/12/13 面试题
花店创业计划书范文
2014/02/07 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
维稳工作情况汇报
2014/10/27 职场文书
安全教育观后感
2015/06/17 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
Python中文纠错的简单实现
2021/07/07 Python
Python列表的索引与切片
2022/04/07 Python