я использую mcamara / Laravel-локализации
в моем проекте, и у меня возникла проблема с Carbon, не распознающим локаль. Когда я использую
$event->start_time->formatLocalized('%A %d %B %Y')
всегда отображается английский формат, хотя я получаю «де» при попытке
App::getLocale()
Очевидно, это связано с тем, что carbon использует локаль из операционной системы, а в моей ОС — de_DE.utf8, так что если я не сделаю
setlocale(LC_TIME, 'de_DE.utf8')
это не работает Я, очевидно, не могу использовать это таким образом, потому что я использую несколько языков.
Определите следующее в файле rout.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');
Так как я определил это вways.php
'prefix' => LaravelLocalization::setLocale(),
Я мог бы продлить setLocale()
установить LC_TIME
к de_DE
или что-нибудь еще. Но для этого мне нужно было бы добавить add ‘Regional’ в config / 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 в случае, если это имеет значение
———РЕДАКТИРОВАТЬ———
Для тех, кто читает это, вариант 2 был реализованы и выпущен как версия 1.0.12
Вы всегда можете создать ключ в файлах lang, чтобы сообщить Carbon, как писать формат.
Что-то вроде:
$event->start_time->formatLocalized(trans('general.date_format'))
Других решений пока нет …