Laravel setLocale возвращает сохраненное значение, но использует config.app значение по умолчанию

У меня какая-то странная проблема … как говорится в названии …

Я делаю пост-запрос на изменение значения lang путем установки cookie lang forever.

После этого я проверяю, существуют ли файлы cookie и app()->setLocale(\Cookie::get('lang')) а затем использовать {{ app()->getLocale() }} который возвращает сохраненное значение lang как ан или же фр.

Но страница по-прежнему загружается config/app.php => 'locale'=>'en'

Могу ли я хотя бы изменить config('app.locale') value to \Cookie::get('lang') или ты знаешь в чем тут проблема?

Спасибо

ОБНОВИТЬ:

Я нашел ответ, мне нужно добавить к каждому файлу внутри папки представлений — новое значение локали, чтобы иметь возможность извлекать содержимое на правильном языке. Я не знаю почему, потому что у меня никогда не было проблем раньше, но если у кого-то еще есть проблемы, это может быть решение.

0

Решение

Возможно, вы изменили язык не в нужном месте. Вы должны использовать app/Providers/AppServiceProvider.php сделать это.

Innside boot метод вы можете добавить что-то вроде этого:

$this->app->setLocale(\Cookie::get('lang', 'en')

И тогда у вас будет постоянно установлен язык — когда для cookie установлено значение из cookie, в противном случае en

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

{{ trans('some.translated') }}

и он будет переведен на действительный язык, когда вы установите перевод в файлах перевода.

1

Другие решения

app()->setLocale('fr') изменит языковой стандарт на время запроса на «fr». Так что если после установки, вы звоните app()->getLocale(), он вернет ‘fr’.

Если ваше приложение читает язык из config('app.locale') в некоторых местах вы можете изменить значение на ходу так:

config(['app.locale' => 'fr'])

Тогда config('app.locale') вернет ‘fr’ на время запроса

0

По вопросам рекламы [email protected]