Я использую mcamara/laravel-localization в моем проекте, и у меня проблема с Carbon, не признающая локаль. Когда я используюУглерод с Laravellocalization не использует правильную локаль
$event->start_time->formatLocalized('%A %d %B %Y')
всегда отображает формат английский, даже если я получаю «де», когда я пытаюсь
App::getLocale()
Очевидно, что это происходит потому, что углерод используется локаль из операционной системы, а ОС имеет «de_de .utf8 ', поэтому, если я не сделаю
setlocale(LC_TIME, 'de_DE.utf8')
не работает. Я, очевидно, не могу так использовать, потому что я использую несколько языков.
- Вариант 1 (плохо и легко, но работает):
Определить следующее routes.php (или где-нибудь еще)
if(App::getLocale()=="de")
setlocale(LC_TIME, 'de_DE.utf8');
else if(App::getLocale()=="hr")
setlocale(LC_TIME, 'hr_HR.utf8');
else
setlocale(LC_TIME, 'en_EN.utf8');
- Вариант 2 (длинное и, возможно, лучшее решение? Ощущается правильное значение)
Так как я это определено в routes.php
'prefix' => LaravelLocalization::setLocale(),
я мог продлить setLocale()
установить LC_TIME
к de_DE
или что-нибудь еще. Но для этого мне нужно расширить добавить «региональный» для конфигурации/laravellocalization.php от
'de' => ['name' => 'German','script' => 'Latn', 'native' => 'Deutsch'],
в
'de' => ['regional' => 'de_DE.utf8', 'name' => 'German','script' => 'Latn', 'native' => 'Deutsch'],
Я также должен был бы создать такой метод, как это в LaravelLocalization.php (очевидно, я бы расширил класс)
public function getCurrentLocaleRegional()
{
return $this->supportedLocales[ $this->getCurrentLocale() ][ 'regional' ];
}
Теперь я хотел бы знать, какой путь лучше? Или есть другое (более легкое) решение этой проблемы?
Я работаю на Ubuntu 15.10, в случае, если это имеет значение
--------- --------- EDIT
Для тех, кто читает это вариант 2 был implemented и выпущен как версия 1.0.12
Но это решение изменило бы между 25.11.2015 и 11/25/2015, но не месяц или имя день. Но все же хорошее решение для этого, спасибо –