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 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
php xml实例 留言本
Mar 20 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
php标签云的实现代码
Oct 10 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
php并发加锁示例
Oct 17 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
编写自己的php扩展函数
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
实例讲解php实现多线程
2019/01/27 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
pip安装python库的方法总结
2019/08/02 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL