我正在尝试在路由组中添加动态语言环境前缀,首先,我通过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 当我尝试通过应用程序更改语言环境时,会翻译网站,但语言环境仍在路由中。
我在这里做错了什么。任何帮助将不胜感激。
谢谢