在路由组中添加动态语言环境前缀

时间:2020-08-12 14:58:20

标签: php laravel routes

我正在尝试在路由组中添加动态语言环境前缀,首先,我通过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 当我尝试通过应用程序更改语言环境时,会翻译网站,但语言环境仍在路由中。

我在这里做错了什么。任何帮助将不胜感激。

谢谢

0 个答案:

没有答案