diff --git a/app/Http/Middleware/LangCheck.php b/app/Http/Middleware/LangCheck.php index 241da0e..cfc56c8 100644 --- a/app/Http/Middleware/LangCheck.php +++ b/app/Http/Middleware/LangCheck.php @@ -5,9 +5,12 @@ namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cookie; +use Illuminate\Support\Facades\View; class LangCheck { + + protected $langs = ['fr','en','es']; /** * Handle an incoming request. * @@ -17,33 +20,92 @@ class LangCheck */ public function handle(Request $request, Closure $next) { - //if lang provided un request then set it - if($request->lang) { - //Set cookie - Cookie::queue(Cookie::forever('language', $request->lang)); - //set session - $request->session()->put('lang',strtolower($request->lang)); - //bonus remove lang parameter from query - return redirect()->to($request->fullUrlWithoutQuery('lang')); + + $routName = $request->route()->getName(); + if (preg_match('/^bo\./', $routName)) { + //Back office + if ($request->lang) { + //within bo we set lang with querystring param + $this->saveUserLocale($request->lang, $request); + //bonus remove lang parameter from query + return redirect()->to($request->fullUrlWithoutQuery('lang')); + } else { + $this->checkFirstAccess($request); + } } else { - //do we have session ? - if(!$request->session()->has('lang')) { - $fromC = Cookie::get('language'); - if (is_null($fromC) || empty($fromC)) { - //pas de cookie, recherche sur le navigateur - $fromC = substr(Request::server('HTTP_ACCEPT_LANGUAGE'), 0, 2); - if (!in_array($fromC, ['fr', 'en', 'es'])) { - //default other languages to en - $fromC = 'en'; + //FRONT + if (preg_match('/^(en|es)\./', $routName)) { + //from front use named routes + $langset = $request->segment(1); + + $this->saveUserLocale($langset, $request); + } else { + //not specified in route + if ($this->checkFirstAccess($request)) { + $routNameEN = 'en.' . $routName; + $routNameES = 'es.' . $routName; + $sess_lang = $request->session()->get('lang', config('app.locale')); + switch ($sess_lang) { + case 'en': + return redirect()->route($routNameEN); + case 'es': + return redirect()->route($routNameES); } } - //set session - $request->session()->put('lang',strtolower($fromC)); + + $langset = 'fr'; + $this->saveUserLocale($langset, $request); } } + + + $sess_lang = $request->session()->get('lang', config('app.locale')); app()->setLocale($sess_lang); + $routePrefixer = ""; + if($sess_lang != 'fr') { + $routePrefixer = $sess_lang . '.'; + } + View::share('routeprefixer', $routePrefixer); + return $next($request); } + + + /** + * + */ + private function saveUserLocale($lang, Request $request) + { + //Set cookie + Cookie::queue(Cookie::forever('language', strtolower($lang))); + //set session + $request->session()->put('lang', strtolower($lang)); + } + + /** + * checks if we have saved locale info for current user + * if not find then save that locale + * @return boolean + */ + private function checkFirstAccess(Request $request) + { + //do we have session ? + if (!$request->session()->has('lang')) { + $fromC = Cookie::get('language'); + if (is_null($fromC) || empty($fromC)) { + //pas de cookie, recherche sur le navigateur + $fromC = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2); + if (!in_array($fromC, $this->langs)) { + //default other languages to en + $fromC = 'en'; + } + } + $this->saveUserLocale($fromC, $request); + return true; + } + //we have lang session + return false; + } } diff --git a/resources/views/front/contact.blade.php b/resources/views/front/contact.blade.php index 0e45490..ccf099d 100644 --- a/resources/views/front/contact.blade.php +++ b/resources/views/front/contact.blade.php @@ -46,7 +46,7 @@
{!! __('Les informations que vous nous communiquez sont collectées et traitées par la Société Bretonne de Volaille, responsable de traitement selon les finalités définies dans notre Charte de confidentialité. Ces informations sont destinées au personnel de la Société Bretonne de Volaille et peuvent être partagées avec ses sous-traitants.
- A tout moment, vous pouvez retirer votre consentement. Pour toute information complémentaire concernant vos données personnelles et vos droits, merci de consulter notre Charte de confidentialité.', ['PRIVROUTE' => route('policy')]) !!}
{{ __('home.products.text')}}
- {{ __('Découvrir')}} + {{ __('Découvrir')}} @if (isset($products_home)){!! clean(nl2br($post_home->text)) !!}