Laravel-如何显示基于会话中存储的语言的内容


Laravel - How to show content based in language stored in session

如果我的网站使用多种语言,例如,在注册一篇文章时,标题将有两个字段,例如,假设是葡萄牙语和英语,我应该如何创建基于locale/route/{?} 设置的当前语言进行注册和显示的逻辑

有了这个,我可以读取我默认的laravel文件,并用死记硬背的方法更改语言:

路线

Route::get('locale/{flag}', 'App'LocaleController@setLanguage');

控制器

class LocaleController extends AppBaseController
{
    public function setLanguage($flag)
    {
        if (in_array(strtolower($flag), config('app.locales'))) {
            Session::put('lang', $flag);
        }
        return redirect()->back();
    }
}

编辑


在我的表中,我可以用两种或多种语言拥有相同的文本,例如:post_title_pt-brpost_title_en,如何根据当前设置的语言获得正确的标题?

当您像这样使用控制器时,您现在可以在AppServiceProvider中的方法boot中添加以下代码:

$lang = Session::get('lang', null)
if ($lang) {
  App::setLocale($lang);
}

您应该为应用程序设置一个区域设置。你可以通过做到这一点

 app()->setLocale($flag);