0

我遇到了一些奇怪的问题......正如标题所说......

我正在发出通过设置 lang forever cookie 来更改 lang 值的发布请求。

之后,我正在检查 cookie 是否存在以及是否存在,app()->setLocale(\Cookie::get('lang'))然后使用{{ app()->getLocale() }}将存储的 lang 值返回为enfr

但是页面仍在加载config/app.php => 'locale'=>'en'中...

我至少可以改变config('app.locale') value to \Cookie::get('lang')吗?或者你知道这里有什么问题吗?

谢谢

更新:

我找到了答案,我需要添加到视图文件夹中的每个文件 - 新的语言环境值才能检索正确的语言内容。我不知道为什么,因为我以前从未遇到过问题,但如果其他人有问题,这可能是解决方案。

4

2 回答 2

0

app()->setLocale('fr')在请求期间将语言环境更改为“fr”。因此,如果在设置后调用app()->getLocale(),它将返回 'fr'。

如果您的应用程序从某些地方读取语言环境config('app.locale'),您可以像这样随时更改值:

config(['app.locale' => 'fr'])

然后config('app.locale')将在请求期间返回“fr”

于 2018-06-17T02:53:53.820 回答
0

可能您更改的语言环境不在正确的位置。你应该用它app/Providers/AppServiceProvider.php来做到这一点。

内部boot方法,您可以添加如下内容:

$this->app->setLocale(\Cookie::get('lang', 'en')

然后您将一直设置语言 - 当 cookie 设置为 cookie 中的值时,否则为en

那么在你看来,你不需要做任何事情。您可以使用:

{{ trans('some.translated') }}

当您在翻译文件中设置翻译时,它将被翻译成有效的语言。

于 2018-06-17T09:00:42.213 回答