Lang facade 未检测到应用程序 lang 更改

我正在尝试使用配置控制器更改 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当前已选中。知道为什么吗?


MM们
浏览 103回答 1
1回答

守着星空守着你

动态更改语言环境是 2 个步骤。我看到你已经完成了第 1 步。第 2 步是在你的刀片文件中做这样的事情(很可能是基本模板):<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">请注意,一旦用户导航到另一个页面,它就会返回到配置中设置的语言环境。但是,如果您需要为当前用户维护区域设置,请使用会话。例如,除了我之前的观点之外,将您的控制器方法更改为:public function set_locale(SetLocaleRequest $request)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; App::setLocale($request->locale);&nbsp; &nbsp; &nbsp; &nbsp; Session::put('locale', $request->locale);&nbsp; &nbsp; &nbsp; &nbsp; return response()->json([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'message' => 'locale.set.success',&nbsp; &nbsp; &nbsp; &nbsp; ], 200);&nbsp; &nbsp; }因此,您可以通过以下方式在刀片模板中连续访问它:<html lang="{{ str_replace('_', '-', Session::get('locale')) }}">
打开App,查看更多内容
随时随地看视频慕课网APP