如何解决在路由组中添加动态语言环境前缀
我正在尝试在路由组中添加动态语言环境前缀,首先,我通过https://github.com/stevebauman/location这个程序包获取用户的IP地址,然后将语言环境与数据库进行比较,并根据该语言环境来设置它在数据库中找不到语言环境,然后我分配了默认语言环境,所有这些逻辑都在 Web 组中间件中完成,所有URL都允许使用。我已经尝试了以下解决方案:
LanguageMiddleware.php 是一个中间件,已分配给Web中间件组中的所有路由。
$position = Location::get('109.219.245.57');
$locale = Locale::where('country_code',strtolower($position->countryCode))->first();
if($locale){
// // LaravelLocalization::setLocale($locale->country_code);
session()->put('country_locale',$locale->country_code);
session()->put('country_language',$locale->language);
session()->put('default_locale',$locale->country_code);
App::setLocale($locale->country_code);
}
else{
App::setLocale('en');
session()->put('country_locale','en');
session()->put('country_language','English');
session()->put('default_locale','en');
}
在此之前一切都很好,并且语言环境根据我的需要进行了更改。
现在,我希望所有路由都具有语言环境前缀,并且尝试了以下解决方案:
解决方案1 :
web.php
Route::group([
'prefix' => app()->getLocale()
],function(){
All of my routes goes here
}
为我提供了每条路线上的默认语言环境“ en”,为www.example.com/en 当我尝试通过应用程序更改语言环境时,会翻译网站,但语言环境仍在路由中。
我在这里做错了什么。任何帮助将不胜感激。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。