我有一个几乎全新的流明装置.
我有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'));