У меня есть почти свежая установка Люмена.
У меня есть 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.php
– static.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'));