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 相关文章推荐
IIS6的PHP最佳配置方法
Mar 19 PHP
木翼下载系统中说明的PHP安全配置方法
Jun 16 PHP
php简单静态页生成过程
Mar 27 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
php中实现字符串翻转的方法
Feb 22 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 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/02 无线电
jQuery 源码分析笔记
2011/05/25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
关于js datetime的那点事
2011/11/15 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
关于numpy数组轴的使用详解
2019/12/05 Python
python模拟斗地主发牌
2020/04/22 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
食品行业求职人的自我评价
2014/01/19 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
见习报告格式要求
2014/11/04 职场文书
经理岗位职责
2015/02/02 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
重阳节慰问信
2015/02/15 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
事业单位岗位说明书
2015/10/08 职场文书