I have an almost fresh installation of Lumen.
I have a POST
route which leads to one Controller. In the request I send lang
parameter with a string value.
public function form(Request $request)
{
if ($request->has('lang')) {
app('config')->set('app.locale', $request->input('lang'));
}
return view('form');
}
I have one folder more in my /resources/lang/
folder called bg
. In this folder I have simple file which has an array just like in resources/lang/en/validation.php
- called static.php
.
In the view I'm displaying I have few lines that say:
<input type="text" name="email" value="" class="input-default" placeholder="{{trans('static.enter_email')}}"/>
The text I've set in those lang files in resources/lang/...
are properly displayed, but I cannot change the locale before displaying the form.
For example, if in my dotenv file I set:
APP_LOCALE=en
And load the view the strings in resources/lang/en/static.php
are loaded.
If I change the APP_LOCALE
to bg
and load the view again, I get the strings from resources/lang/bg/static.php
.
All I want is to set the locale before rendering the view, which doesn't seem to work with the code (in my controller) I provided above.
Also I couldn't find any information about localization in Lumen on the official site, but I suppose it supports such, since trans()
is working.
You are changing the config after it is loaded, which has no effect. To change the locale at runtime use the setLocale()
method on the app instance:
app()->setLocale($request->input('lang'));
The first answer seem to only work on Laravel. To change the locale at runtime with Lumen use this:
app('translator')->setLocale($request->input('lang'));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With