Viewing file: Language.php (2.45 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Middleware;
use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Cookie;
class Language { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) {
$ipAddress = $request->ip(); // Get user IP address
if (Cookie::has('user_locale')) {
$locale = Cookie::get('user_locale'); // Get language from cookie
} else {
$response = Http::get("http://ip-api.com/json/{$ipAddress}"); $res = $response->json();
if (isset($res['countryCode']) && $res['countryCode']) { $currentCountry = $res['countryCode'];
if ($currentCountry == 'SA') { $locale = 'ar'; }elseif ($currentCountry == 'DE'){ $locale = 'gr'; }elseif ($currentCountry == 'IT'){ $locale = 'it'; }elseif ($currentCountry == 'ES'){ $locale = 'sp'; }elseif ($currentCountry == 'PT'){ $locale = 'pt'; }elseif ($currentCountry == 'IN'){ $locale = 'hi'; }elseif ($currentCountry == 'RU'){ $locale = 'ru'; }elseif ($currentCountry == 'CN'){ $locale = 'cn'; }elseif ($currentCountry == 'FR'){ $locale = 'fr'; }elseif ($currentCountry == 'TR'){ $locale = 'tk'; }else{ $locale = 'en'; }
// $locale = isset(json_decode(get_settings('local_setting'))->language) ? json_decode(get_settings('local_setting'))->language : 'en';
Cookie::queue(Cookie::make('user_locale', $locale, 1440));
} else { $locale = isset(json_decode(get_settings('local_setting'))->language) ? json_decode(get_settings('local_setting'))->language : 'en'; }
}
if (!Session::has('locale')) { Session::put('locale', $locale); } App::setLocale(session('locale'));
return $next($request); } }
|