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 相关文章推荐
一个可以找出源代码中所有中文的工具
Oct 25 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
PHP中读写文件实现代码
Oct 20 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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安装攻略:常见问题解答(三)
2006/10/09 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
python实现哈希表
2014/02/07 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
对Python中plt的画图函数详解
2018/11/07 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
What is EJB
2016/07/22 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
支教自我鉴定
2014/01/18 职场文书
公立医院改革实施方案
2014/03/14 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
毕业实习计划书
2015/01/16 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
匿名信格式范文
2015/05/27 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server