Example (Middleware)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php namespace App\Http\Middleware; use Closure; use App; use Illuminate\Support\Facades\Cookie; class Localization { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { //$locale = App::getLocale(); //logg($locale); $locale = $request->input('locale'); //logg($locale); //logg(session()->get('locale')); if($locale != false){ //session(['locale' => $locale]); $this->save_cookie($locale); }else{ //if(session()->get('locale') != false){ $cookie_locale = Cookie::get('locale'); if($cookie_locale != false){ App()->setLocale($cookie_locale); }else{ //偵測browser語言 $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if($lang == 'en'){ $this->save_cookie('en'); }else{ $this->save_cookie('zh_TW'); } } } return $next($request); } private function save_cookie($locale){ $minutes = 60 * 24 * 365 * 1;// 1 year $cookie = Cookie::queue('locale', $locale, $minutes); App()->setLocale($locale); } } |
Reference: