我正在尝试使用配置控制器更改 Laravel 7 中的应用程序区域设置:class ConfigController extends Controller{ /** * * Set the App locale. * * @param \SetLocaleRequest $request * @return mixed */ public function set_locale(SetLocaleRequest $request) { App::setLocale($request->locale); return response()->json([ 'message' => trans('config.set'), ], 200); }}这段代码实际上有效,因为一个简单App:getLocale();的返回提供的语言。无论哪种方式,Lang外观都会继续使用提供的默认语言环境,config/app.php即西班牙语。所以,这段代码:Lang::get('auth.failed')正在返回文本:"Estas credenciales no coinciden con nuestros registros."即使en当前已选中。知道为什么吗?
1 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
动态更改语言环境是 2 个步骤。我看到你已经完成了第 1 步。第 2 步是在你的刀片文件中做这样的事情(很可能是基本模板):
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
请注意,一旦用户导航到另一个页面,它就会返回到配置中设置的语言环境。但是,如果您需要为当前用户维护区域设置,请使用会话。例如,除了我之前的观点之外,将您的控制器方法更改为:
public function set_locale(SetLocaleRequest $request)
{
App::setLocale($request->locale);
Session::put('locale', $request->locale);
return response()->json([
'message' => 'locale.set.success',
], 200);
}
因此,您可以通过以下方式在刀片模板中连续访问它:<html lang="{{ str_replace('_', '-', Session::get('locale')) }}">
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消