如何本地化Carbon
的语言呢?
- 如果使用
Carbon
的diffForHumans()
等方法时默认会得到英文显示,对于国内用户而言体验未免太...
// 示例:
Carbon::parse('2018-09-20 09:56:31')->diffForHumans(); // 则会显示 8 days from now
Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
- 那么如何让
diffForHumans()
输出的是中文呢? 以Laravel
为例 做以下配置:
第一种方法 非常方便,但是只能使用固定在语言包里的文案,不能进行修改:
// 在AppServiceProvider加入配置
Carbon::setLocale('zh');
第二种方法 较上个方法而言,有点麻烦.但比较灵活,可随时修改语言包里的文案:
// 在AppServiceProvider加入配置
use Carbon\Carbon;
use use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;
$locale = config('app.locale'); // zh_CN
$translator = new Translator($locale);
$translator->addLoader('array', new ArrayLoader());
$lang = require_once base_path('resources/lang/' . $locale . '/datetime.php');
$translator->addResource('array', $lang, $locale);
Carbon::setTranslator($translator);
- 附上:
resources/lang/' . $locale . '/datetime.php
的配置 可参考
return [
'year' => ':count年',
'month' => ':count月',
'week' => ':count周',
'day' => ':count天',
'hour' => ':count小时',
'minute' => ':count分钟',
'second' => ':count秒',
'ago' => ':time前',
'from_now' => '倒计时:time',
'after' => ':time后',
'before' => ':time前'
];
之后使用Carbon
的方法时,就是中文啦!
看起来博客停了2年又复活啦~~
是啊,以后会经常更新的 共勉!