Lumen не может изменить локаль

У меня есть почти свежая установка Люмена.

У меня есть POST маршрут, который ведет к одному контроллеру. В запросе я отправляю параметр lang со строковым значением.

 public function form(Request $request) { if ($request->has('lang')) { app('config')->set('app.locale', $request->input('lang')); } return view('form'); } 

У меня есть еще одна папка в папке /resources/lang/ bg . В этой папке у меня есть простой файл с массивом, похожим на resources/lang/en/validation.phpstatic.php .

В представлении, которое я показываю, у меня есть несколько строк, которые говорят:

 <input type="text" name="email" value="" class="input-default" placeholder="{{trans('static.enter_email')}}"/> 

Текст, который я установил в этих файлах lang в resources/lang/... , отображается правильно, но я не могу изменить языковой стандарт перед отображением формы.

Например, если в моем файле dotenv я устанавливаю:

APP_LOCALE=en

Загрузите представление, в которое загружаются строки в resources/lang/en/static.php . Если я изменил APP_LOCALE на bg и снова загрузил представление, я получаю строки из resources/lang/bg/static.php .

Все, что я хочу, – установить языковой стандарт перед визуализацией представления, который, похоже, не работает с кодом (в моем контроллере), указанным выше.

Также я не мог найти никакой информации о локализации в Lumen на официальном сайте, но я полагаю, что он поддерживает это, поскольку trans() работает.

Вы меняете конфигурацию после ее загрузки, которая не имеет никакого эффекта. Чтобы изменить локаль во время выполнения, используйте метод setLocale() в экземпляре приложения:

app()->setLocale($request->input('lang'));

редактировать

Первый ответ, похоже, работает только на Ларавеле. Чтобы изменить язык во время выполнения с помощью Lumen, используйте это:

app('translator')->setLocale($request->input('lang'));