使用 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/