在我们以往的Laravel项目中,经常需要使用time_ago等字段,并将其转换成我们熟悉的本地语言。有很多方法可以实现,比如写一个time_ago的辅助函数,把它转成本地的,或者用Carbon的diffForHumans函数再换成本地语言。我们以前写的代码是这样的:但是当我们需要替换成中文,繁体中文,日文或者韩文的时候,我们需要写多个类似的方法比如:time_ago_CN//简体中文time_ago_HK//繁体中文time_ago_JP//Japanesetime_ago_KO//Korean当项目国际化或者需要支持更多语言时,不方便。但是最近看carbon的官方文档的时候,发现carbon是支持多种语言的,也就是上面的东西,carbon已经实现了……(这又是我们技术债上的一笔)如果要支持中文,我们可以将以上方法添加到模型中publicfunctioncreatedAt($locale='zh'){Carbon::setLocale($locale);return$this->created_at->diffForHumans();}那么调用方法如下://Chinese$user->createdAt();//9个月前//简繁体$user->createdAt('zh_HK');//9个月前//日语$user->createdAt('ja_JP');//9个月前如果你想让他变得更通用,建议封装成一个辅助函数functiontime_ago($time,$locale='zh'){$time=$timeinstanceofCarbon?$时间:碳::解析($时间);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.0as1.39.0","kylekatarnls/laravel-carbon-2":"^1.0.0"}}然后执行composerupdate来更新我们的依赖。Composer更新终于发到carbon官方文档地址:https://carbon.nesbot.com/
