Евгений
смотри. есть роут setlocale/{locale} тfм я меняю локаль на заданную app::setLocale($locale) b редиректю обратно. На фронте показываю локаль. Она всегда ru даже если я меняю на en
Progmer
аа, ну понятно. Ну конечно в сессии будет. Сама локаль в app/config.php лежит
Progmer
запомнил в сессии и будет тебе
Progmer
бери с нее
Progmer
а по умолчанию из app/config.php
Progmer
точнее из config/app.php
Евгений
ок, а сообщения от валидации, они же возвращаются в зависимости от локали?
Евгений
то есть той которая в config b которая всегда ru?
Progmer
ну валидация как-то дергает эту настройку? app.locale ?
Евгений
у меня валидация не как не дергает, но там же когда я в конфиге меняю локаль вручную, то сообщения валидации меняются
Евгений
а если локаль меняется в сессии?
Евгений
то надо самому как то менять?
Progmer
ну да, общий мидлваре делать в котором из сессии устанавливать текущую локаль?
Евгений
у меня так и делается
Progmer
Правда костыльно как-то, но уверен решение есть
Евгений
я просто не могу понять, как узнать что локаль установилась?
Progmer
присутствуие ее в сессии
Евгений
ладно, надо отойти
Progmer
факт присутствия
Progmer
getLocale просто берет $this['config']->get('app.locale');
Евгений
мидлваря Locale
$raw_locale = Session::get('locale');
if (in_array($raw_locale, Config::get('app.locales'))) {
$locale = $raw_locale;
}
else $locale = Config::get('app.locale');
App::setLocale($locale);
return $next($request);
Роут setlocale
Route::get('setlocale/{locale}', ['as' => 'setlocale', function ($locale) {
if (in_array($locale, \Config::get('app.locales'))) {
\Session::put('locale', $locale);
}
return redirect()->back();
}]);
Вьюха
Route::get('/', ['as' => 'home', 'uses' => function () {
$loc = App::getLocale();
return view('frontend.home', compact('loc'));
}]);
Вывожу во вьюхе
<p>{{ Session::get('locale') }}</p> // ru/en - в зависимости от setlocale
<p>{{ App::getLocale() }}</p> // всегда ru
<p>{{ $loc }}</p> // всегда ru
Тj есть локаль только в сессиях задается, да?
Евгений
всё таки не пойму как потом сообщения валидации будут меняться в зависимости от локали
Anonymous
тебе надо ставить локаль через App::setLocale
Евгений
кроме того что менять самому
Anonymous
каждый раз
Евгений
так в мидлваре ставится ж
Anonymous
а, ты ставишь
Евгений
ааа
Евгений
стопэээ
Евгений
бля, щас
Евгений
а не
Евгений
думал что забыл мидлварю установить на роут
Евгений
но у меня мидлваря глобально установлена
Евгений
так можно ваще?
Евгений
или надо на роут
Евгений
воо
Евгений
на роут повесил, работает))
Евгений
мозг себе выедал, и вам
Anonymous
)))
Anonymous
норм я помогаю
Евгений
могёшь
Progmer
Евгений
тогда еще вопрос. как мне теперь прописывать сообщения валидации не в фалах локализации а в массивах messages у валидации, но чтобы опять таки от локали отталкивалось. Просто if/else локаль проверять?
Anonymous
плохая идея
Anonymous
бери их тогда из файла )
Anonymous
через trans
Евгений
ммм
Евгений
то есть
$messages = [
'name.required' => trans('messages.required_name'),
];
так?
Anonymous
тип того
Anonymous
а нах тебе?
Евгений
да блин, сайт на двух языках
Anonymous
почему в validation.php не прописать?
Евгений
люблю уникализировать сообщения ошибок нормально
Anonymous
так можно прям в validation
Евгений
чтобы не было так
"Имя - обязательное поле"
а было типа
"Введите ваше имя"
"Введите ваш телефон"
ваш/ваше/ваши
это как прописать там?
Anonymous
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
Евгений
опоп, ща гляну
Евгений
во, походу то что надо
Евгений
спасибо ди
Anonymous
🦄
Евгений
надо теперь на практике всё проверять)
Евгений
так, тогда в догонку еще вопрос. мне надо сделать урлы site.ru/ru и site.ru/en
z так пологая надо сделать группу роутов. В группе роутов сделать префикс 'prefix' => App::getLocale()
Значит ли это что во все именованные роуты надо передавать параметр локали?
Anonymous
нет
Evgenii
ребят, не подскажте, чата ocStore разрабов нет?
invariance
это что
invariance
😆
Dmitriy
Вроде переделка опенкард
Евгений
ди, помоги с локализацией урлов
Евгений
Route::group(['middleware' => 'locale'], function(){
Route::get('/', ['as' => 'home', 'uses' => function () {
return view('frontend.home');
}]);
});
Сейчас так, группа роутов с мидлварей локал меняет устанавливает локаль, все работает. Теперь надо как то префикс пробить туда
Евгений
делал внутри еще одну группу роутов 'prefix' => \App::getLocale() но чтото не работало как надо, на ru все работает на en - 404
Евгений
блин, легче было взять плагин и заюзать, чем выдумывать всё это)))
Anonymous
(
Anonymous
разобрался?
Евгений
нет
Anonymous
а getLocale что возвращает?
Anonymous
Сделай там Log::info(App::getLocal());
Anonymous
В роутах
Евгений
где именно?
Anonymous
Там где роуты
Anonymous
Перед группой