Laravel本地化重定向问题

时间:2015-11-09 04:46:39

标签: laravel redirect localization

我正在尝试在Laravel应用程序中建立一个良好的本地化系统。基本上我所追求的是这个:
如果用户登录并选择了一种语言,我想存储该值,并且下次登录时,系统会自动使用URL中的正确语言环境重定向他。
如果用户未登录但已选择语言,我希望存储在会话中,并使用该会话正确设置语言环境。
如果用户没有选择语言,我想使用http://www.wipmania.com/来设置语言环境。

我能够将所选值存储在Users表和会话中。问题是如何处理重定向。我试着像这样设置一个beforeFilter:

if(\Auth::check()) {
   $user = \User::find(\Auth::user()->id);
   if($user->localization != NULL) {
     \LaravelLocalization::setLocale($user->localization);
     \Redirect::to(\LaravelLocalization::getLocalizedURL($user->localization));
            } else if(\Session::get('theSetLocale', 'none') != 'none') {
                \LaravelLocalization::setLocale(\Session::get('theSetLocale', 'none'));
                \Redirect::to(\LaravelLocalization::getLocalizedURL(\Session::get('theSetLocale', 'none')));
            } else {
                $ip = \Request::getClientIp();  
                $thestrings = 'http://api.wipmania.com/' . $ip . '?' . 'www.markmaster.com';
                $country = file_get_contents($thestrings); 
                if ($country == 'NO') {
                    \LaravelLocalization::setLocale('no');
                    \Redirect::to(\LaravelLocalization::getLocalizedURL( 'no'));
                } else if ($country == 'SE') {
                    \LaravelLocalization::setLocale('se');
                    \Redirect::to(\LaravelLocalization::getLocalizedURL( 'se'));
                } else if ($country == 'DK') {
                    \LaravelLocalization::setLocale('dk');
                    \Redirect::to(\LaravelLocalization::getLocalizedURL( 'dk'));
                } else {
                    \LaravelLocalization::setLocale('en');
                    \Redirect::to(\LaravelLocalization::getLocalizedURL( 'en'));
                }
            }
            }else if(\Session::get('theSetLocale', 'none') != 'none') {
              \LaravelLocalization::setLocale(\Session::get('theSetLocale', 'none'));
              \Redirect::to(\LaravelLocalization::getLocalizedURL(\Session::get('theSetLocale', 'none')));
        } else {
            $ip = \Request::getClientIp();  
            $thestring = 'http://api.wipmania.com/' . $ip . '?' . 'markmaster.com';
            $country = file_get_contents($thestring); 
            if ($country == 'NO') {
                \LaravelLocalization::setLocale('no');
                \Redirect::to(\LaravelLocalization::getLocalizedURL( 'no'));
            } else if ($country == 'SE') {
                \LaravelLocalization::setLocale('se');
                \Redirect::to(\LaravelLocalization::getLocalizedURL( 'se'));
            } else if ($country == 'DK') {
                \LaravelLocalization::setLocale('dk');
                \Redirect::to(\LaravelLocalization::getLocalizedURL( 'dk'));
            } else {
                \LaravelLocalization::setLocale('en');
                \Redirect::to(\LaravelLocalization::getLocalizedURL( 'en'));
            }
        }

虽然这不起作用,但它可能会帮助你们理解我想要实现的目标。

0 个答案:

没有答案