给Carbon设置为中文语言

如何本地化Carbon的语言呢?

  • 如果使用CarbondiffForHumans()等方法时默认会得到英文显示,对于国内用户而言体验未免太...
// 示例:
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的方法时,就是中文啦!

phpLaravel

我来吐槽

*

*

已有 2 条评论

  1. SNGR

    看起来博客停了2年又复活啦~~

    1. Hoe

      是啊,以后会经常更新的 共勉!