流明无法改变语言环境

Iva*_*ova 7 php lumen

我有一个几乎全新的流明装置.

我有POST一条通往一个控制器的路线.在请求中,我发送lang带有字符串值的参数.

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

我的文件夹中有一个/resources/lang/名为的文件夹bg.在这个文件夹中,我有一个简单的文件,它有一个类似于in resources/lang/en/validation.php- 的数组static.php.

在我正在显示的视图中,我有几行说:

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

我在这些lang文件中设置的文本已resources/lang/...正确显示,在显示表单之前我无法更改语言环境.

例如,如果在我的dotenv文件中我设置:

APP_LOCALE=en

并加载视图中的字符串resources/lang/en/static.php.如果我改变了APP_LOCALEto bg并再次加载视图,我会从中获取字符串resources/lang/bg/static.php.

我想要的只是在渲染视图之前设置区域设置,这似乎不适用于我上面提供的代码(在我的控制器中).

此外,我在官方网站上找不到有关Lumen本地化的任何信息,但我认为它支持这样,因为trans()它正在工作.

use*_*930 14

您正在加载配置后更改配置,这没有任何效果.要在运行时更改语言环境,请使用setLocale()app实例上的方法:

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

编辑

第一个答案似乎只适用于Laravel.要使用Lumen在运行时更改语言环境,请使用以下命令:

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