更改语言环境时更改路由组前缀

时间:2019-04-24 10:17:41

标签: php laravel routes localization

我想在更改语言环境时更改路由组前缀。

例如,如果语言环境为en:

     Route::group(['prefix' => 'giveaway'], function () {

     });

如果语言环境为tr:

     Route::group(['prefix' => 'cekilis'], function () {

     });

我应该怎么做。

我尝试了

   'prefix'=>__('routes.prefix')

但是应用程序无法访问路线中的当前语言环境。

1 个答案:

答案 0 :(得分:0)

我建议您使用中间件将语言环境设置为动态

创建如下所示的中间件:

namespace App\Http\Middleware;

use Closure;

class Language
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle($request, Closure $next)
    {
        \App::setLocale($request->locale);

        return $next($request);
    }
}

然后在app \ Http \ Kernel中注册此中间件:

protected $middlewareGroups = [
    'web' => [
            // ...
            \App\Http\Middleware\Language::class,
            // ...
    ]
];

最后,您可以在路由文件上调用中间件

Route::middleware('language')->group(function ($locale) {

    //You have a condition as you wish

    if ($locale == 'en') {
        Route::group(['prefix' => 'giveaway'], function () {
        .......

        });
    } elseif ($locale == 'tr') {
        Route::group(['prefix' => 'cekilis'], function () {
        ........

        });
    }

});

我希望这能解决您的问题