php - Laravel Carbon 本地化不起作用(从数字中获取本地化的月份名称)

标签 php datetime locale laravel-5.3 php-carbon

使用 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 转换为克罗地亚语的 August。 我总是可以手动将 January 更改为 Siječanj 等等,但如果可以使用一些 PHP 或 Carbon 的方法来保持我的代码简洁,那就太好了。

最佳答案

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

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

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

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

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

This example will work if you have the respective locales installed in your system.

我成功地使用 App\Providers\AppServiceProvider 启动方法中的这些行将 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

关于php - Laravel Carbon 本地化不起作用(从数字中获取本地化的月份名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40073696/

相关文章:

datetime - 如何从 tweepy 状态对象中检索日期和时间?

java - 如何获取系统语言?

c - 使用 ICU C API 显示区域设置货币符号?

php - 如何在 while 循环中连接表中的两列值,如 -product_name(product_quantity), ..... 并存储在变量中

php - 反向面包屑问题

php - 是否有任何 PHP -> LLVM IR 翻译器?

ios - 如何根据状态栏中设备的时间更新时间?

javascript - 如何让Javascript倒计时24小时并在24小时后淡出div元素?

javascript - 根据区域设置格式化日期字符串,无需创建日期对象 (JavaScript)

php - 通过反射访问 SplObjectStorage 数据