流明无法更改语言环境
Lumen fails to change locale
我几乎全新安装了 Lumen。
我有一条通往一个控制器的 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')}}"/>
我在 resources/lang/...
中的那些 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'));
编辑
第一个答案似乎只适用于 Laravel。要在运行时使用 Lumen 更改区域设置,请使用:
app('translator')->setLocale($request->input('lang'));
在运行时更改区域设置因框架而异。
您可以使用外观或辅助函数:
对于流明:
Lang::setLocale('lang');
或
app('translator')->setLocale('lang');
对于Laravel:
App::setLocale('lang');
或
app()->setLocale('lang');
我几乎全新安装了 Lumen。
我有一条通往一个控制器的 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')}}"/>
我在 resources/lang/...
中的那些 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'));
编辑
第一个答案似乎只适用于 Laravel。要在运行时使用 Lumen 更改区域设置,请使用:
app('translator')->setLocale($request->input('lang'));
在运行时更改区域设置因框架而异。 您可以使用外观或辅助函数:
对于流明:
Lang::setLocale('lang');
或
app('translator')->setLocale('lang');
对于Laravel:
App::setLocale('lang');
或
app()->setLocale('lang');