diff --git a/packages/Webkul/Admin/src/Http/Middleware/Locale.php b/packages/Webkul/Admin/src/Http/Middleware/Locale.php new file mode 100644 index 000000000..7f9b80cc0 --- /dev/null +++ b/packages/Webkul/Admin/src/Http/Middleware/Locale.php @@ -0,0 +1,52 @@ +locale = $locale; + } + + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + $locale = request()->get('admin_locale'); + + if ($locale) { + if ($this->locale->findOneByField('code', $locale)) { + app()->setLocale($locale); + + session()->put('admin_locale', $locale); + } + } else { + if ($locale = session()->get('admin_locale')) { + app()->setLocale($locale); + } else { + app()->setLocale(app()->getLocale()); + } + } + + unset($request['admin_locale']); + + return $next($request); + } +} diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 1094e5bd7..7a34e7f96 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -1,6 +1,6 @@ ['web']], function () { +Route::group(['middleware' => ['web', 'admin_locale']], function () { Route::prefix(config('app.admin_url'))->group(function () { Route::get('/', 'Webkul\Admin\Http\Controllers\Controller@redirectToLogin'); diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index ce0abf143..5e56d6782 100755 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -3,6 +3,8 @@ namespace Webkul\Admin\Providers; use Illuminate\Support\ServiceProvider; +use Illuminate\Routing\Router; +use Webkul\Admin\Http\Middleware\Locale; use Webkul\Core\Tree; class AdminServiceProvider extends ServiceProvider @@ -12,7 +14,7 @@ class AdminServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(Router $router) { $this->loadRoutesFrom(__DIR__ . '/../Http/routes.php'); @@ -29,6 +31,8 @@ class AdminServiceProvider extends ServiceProvider $this->registerACL(); + $router->aliasMiddleware('admin_locale', Locale::class); + $this->app->register(EventServiceProvider::class); } diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php index 48e7c9ce6..b24aba7ea 100755 --- a/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/layouts/nav-top.blade.php @@ -16,6 +16,42 @@ + get('admin_locale') ?: app()->getLocale();?> + +
+ + + +
+