Lumen fails to change locale

南笙酒味 提交于 2019-11-28 03:42:08

问题


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.


回答1:


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'));

Edit

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'));



来源:https://stackoverflow.com/questions/31244624/lumen-fails-to-change-locale

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!