Laravel setLocale返回存储的值,但使用config.app默认值

问题描述 投票:0回答:2

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

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

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

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

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

谢谢

更新:

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

php laravel laravel-5 laravel-5.6 laravel-localization
2个回答
0
投票

您可能不是在正确的位置更改区域设置。你应该使用app/Providers/AppServiceProvider.php来做到这一点。

Innside boot方法你可以添加这样的东西:

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

然后你会一直设置语言 - 当cookie设置为cookie的值时,否则设置为en

然后在您的视图中,您不需要做任何事情。你可以使用:

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

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


0
投票

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

如果您的应用程序在某些地方从config('app.locale')读取区域设置,您可以像这样更改值:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.