Laravel setLocale returns 存储值但使用 config.app 默认值
Laravel setLocale returns stored value but use config.app default one
我遇到了一些奇怪的问题...如标题所述...
我正在 post 请求通过设置 lang forever cookie 来更改 lang 值。
之后我检查 cookie 是否存在以及它是否存在 app()->setLocale(\Cookie::get('lang'))
然后使用 {{ app()->getLocale() }}
其中 returns 将 lang 值存储为 en 或 fr.
但页面仍在加载 config/app.php => 'locale'=>'en'
...
我可以至少更改 config('app.locale') value to \Cookie::get('lang')
或者你知道这里可能有什么问题吗?
谢谢
更新:
我找到了答案,我需要添加到 views 文件夹中的每个文件 - 新的语言环境值才能检索正确的 lang 内容。我不知道为什么,因为我以前从未遇到过问题,但如果其他人有问题这可能是解决方案。
app()->setLocale('fr')
会将请求期间的语言环境更改为 'fr'。所以如果在设置之后,你调用app()->getLocale()
,它会return 'fr'.
如果您的应用程序在某些地方从 config('app.locale')
读取区域设置,您可以像这样随时更改值:
config(['app.locale' => 'fr'])
然后 config('app.locale')
将在请求期间 return 'fr'
可能是您更改了语言环境,但位置不对。你应该使用 app/Providers/AppServiceProvider.php
来做到这一点。
Innside boot
方法你可以添加这样的东西:
$this->app->setLocale(\Cookie::get('lang', 'en')
然后您将始终设置语言 - 当 cookie 设置为来自 cookie 的值时,否则设置为 en
那么在你看来你什么都不用做。您可以只使用:
{{ trans('some.translated') }}
当您在翻译文件中设置翻译时,它会被翻译成有效的语言。
我遇到了一些奇怪的问题...如标题所述...
我正在 post 请求通过设置 lang forever cookie 来更改 lang 值。
之后我检查 cookie 是否存在以及它是否存在 app()->setLocale(\Cookie::get('lang'))
然后使用 {{ app()->getLocale() }}
其中 returns 将 lang 值存储为 en 或 fr.
但页面仍在加载 config/app.php => 'locale'=>'en'
...
我可以至少更改 config('app.locale') value to \Cookie::get('lang')
或者你知道这里可能有什么问题吗?
谢谢
更新:
我找到了答案,我需要添加到 views 文件夹中的每个文件 - 新的语言环境值才能检索正确的 lang 内容。我不知道为什么,因为我以前从未遇到过问题,但如果其他人有问题这可能是解决方案。
app()->setLocale('fr')
会将请求期间的语言环境更改为 'fr'。所以如果在设置之后,你调用app()->getLocale()
,它会return 'fr'.
如果您的应用程序在某些地方从 config('app.locale')
读取区域设置,您可以像这样随时更改值:
config(['app.locale' => 'fr'])
然后 config('app.locale')
将在请求期间 return 'fr'
可能是您更改了语言环境,但位置不对。你应该使用 app/Providers/AppServiceProvider.php
来做到这一点。
Innside boot
方法你可以添加这样的东西:
$this->app->setLocale(\Cookie::get('lang', 'en')
然后您将始终设置语言 - 当 cookie 设置为来自 cookie 的值时,否则设置为 en
那么在你看来你什么都不用做。您可以只使用:
{{ trans('some.translated') }}
当您在翻译文件中设置翻译时,它会被翻译成有效的语言。