I'm building a multilingual site under Codeigniter 3.0 and I'd like to have this behavior:
The default language of the site is 'en'. When user visits site (/), it gets browser's Accept-language and stores it in session var. Then I check if language is 'en' or not. If not, it redirects to mysite.com/lang. Case language is not 'en', do nothing so it keeps mysite.com/
The problem is that CI takes /lang as a controller.
I edited routes.php as following:
$route['es'] = '/';
$route['en'] = '/';
$route['de'] = '/';
But now I'm on a "too many redirects" issue as routes.php redirects to / when coming from /language and in my controller redirects to /language
My controller:
class Checklanguage  {
        public $CI;
        /**
         * Constructor.
         */
        public function __construct()
        {
                if (!isset($this->CI))
                {
                        $this->CI =& get_instance();
                }
                $this->CI->load->library('session');
        }
        public function redirect_if_not_default()
        {
                /* LANGUAGES SECTION */
                $browserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
                // if browser has no language, we use 'en'
                if (strlen($browserLang) != 2) $browserLang = 'en';
                // retrieve session lang (maybe NULL)
                $sessionLang = $this->CI->session->userdata('lang');
                // determine which language use
                // if user has not set any language, we use browser lang
                if(!isset($sessionLang)) $preferredLang = $browserLang;
                // if user has changed language, we use session language
                if (strlen($sessionLang) == 2) {
                        $preferredLang = $sessionLang;
                }
                // redirect if language is not 'en'
                if ($preferredLang != 'en') {
                        header('Location: /'.$preferredLang);
                }
        }
}
How can I solve this? Thanks