2016-10-16 3 views
2

Использование Laravel 5.3,локализация Laravel углерода не работает (получить локализованы имя месяца с номером)

В моем методе я использую

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

, но я получаю Sunday вместо CroatianWordForSunday.

Я попытался использовать Carbon::setLocale('hr') вместо setlocale(), но я все еще получаю Sunday.

В моем config/app.php файле я установил 'locale' => 'hr'.

Следует отметить, что метод Carbon's diffForHumans() успешно переводится, если я использую Carbon::setLocale('hr').

В конце концов, все, что я пытаюсь сделать, это преобразовать число 8 в августе, но на хорватском. Я всегда мог просто вручную сменить январь на Siječanj и так далее, но было бы неплохо, если бы это можно было сделать с помощью метода PHP или Carbon, чтобы мой код был кратким.

ответ

3

Вы уверены, что в вашей системе установлен код hr_HR (а не hr-HR!)?

Предположим, что ваш сервер работает в среде Unix, что вы видите при ленте locale -a в терминале?

Если вы этого не видите, попробуйте сначала установить его. В зависимости от вашей системы, вы можете попробовать:

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

Согласно документации PHP strftime (Углерод вызов этой функции):

Этот пример будет работать, если у вас есть соответствующие локали, установленные в вашей системы.

мне удалось получить перевод углерода работает на французском языке, используя эти строки в методе App\Providers\AppServiceProvider ботинка:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^