【问题标题】:Laravel Carbon localization not working (get localized name of month from number)Laravel Carbon 本地化不起作用(从数字中获取月份的本地化名称)
【发布时间】:2017-02-25 16:30:57
【问题描述】:

使用 Laravel 5.3,

在我的方法中我使用

setlocale(LC_TIME, 'hr-HR');
dd(Carbon::now()->formatLocalized('%A'));

但我得到的是Sunday 而不是CroatianWordForSunday

我尝试使用Carbon::setLocale('hr') 而不是setlocale(),但我仍然得到Sunday

在我的config/app.php 文件中,我设置了'locale' => 'hr'

需要注意的是,如果我使用Carbon::setLocale('hr'),Carbon 的diffForHumans() 方法会成功翻译。

最后,我要做的就是将数字 8 转换为八月,但使用克罗地亚语。 我总是可以手动将一月更改为 Siječanj 等等,但如果可以使用一些 PHP 或 Carbon 的方法来保持我的代码简洁,那就太好了。

【问题讨论】:

    标签: php datetime locale laravel-5.3 php-carbon


    【解决方案1】:

    您确定您的系统上安装了hr_HR(而不是hr-HR!)语言环境吗?

    假设您的服务器在 Unix 环境中运行,当您在终端中录制 locale -a 时会看到什么?

    如果您没有看到它,那么您应该先尝试安装它。 根据您的系统,您可以尝试:

    $ sudo locale-gen hr_HR.UTF-8
    $ sudo dpkg-reconfigure locales
    

    根据 PHP strftime 的文档(Carbon 正在调用这个函数):

    如果您的系统中安装了相应的语言环境,则此示例将有效。

    我使用App\Providers\AppServiceProvider boot 的方法中的这些行成功地使 Carbon 翻译工作在法语中:

    use Config;
    use Carbon\Carbon;
    
    use Illuminate\Support\ServiceProvider;
    
    class AppServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap any application services.
         *
         * @return void
         */
        public function boot()
        {
            setlocale(LC_ALL, Config::get('app.lc_all'));
            Carbon::setLocale(Config::get('app.locale'));
        }
    
        /**
         * Register any application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }
    

    使用以下配置设置:

    // [...]
    'locale' => env('APP_LOCALE', 'en'),
    'lc_all' => env('APP_LC_ALL', 'en_US.UTF-8'), // Pay attention to the locale name!
    // [...]
    

    然后使用 .env 文件:

    APP_LOCALE = fr
    APP_LC_ALL = fr_FR.UTF-8
    

    【讨论】:

    • 在 AppServiceProvider::boot() 我尝试“setlocale(LC_ALL, 'fr');”, “Carbon::setLocale('fr');”。当我执行“dd(Carbon::getLocale());”时我有“fr”,但当我做“dd(Carbon::now()->format('l F Y'));”时我有“2021 年 10 月星期三”(请参阅​​下面的帖子)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2018-12-21
    • 2012-12-09
    • 2017-02-28
    相关资源
    最近更新 更多