src/Dispatch/Dispatcher.php
public function setupLocale()
    {
        // The virtual host may prescribe a language
        if (isset($this->variables['i18n']))
        {
            $vhost = $this->vhost;
            $locales = $vhost->getLocales();
            $session = $this->request->session;
            $locale = null;
            
            if ($session !== null && $session->has('locale', Type::STRING))
            {
                $locval = $session['locale'];
                foreach ($locales as $supported_locale)
                {
                    if ($locval === $supported_locale->getLocale())
                    {
                        $locale = $locval;
                        self::$logger->debug("Set language based on session variable to {0}", [$locale]);
                        break;
                    }
                }
            }

            if ($locale === null && !empty($locales))
            {
                $accept = $this->request->accept_language;
                $locale = $vhost->selectLocaleFromAcceptHeader($accept);

                if ($locale === null)
                {
                    $locale = reset($locales);
                    self::$logger->debug("Set language based on default locale {0}", [$locale]);
                }
                else
                {
                    self::$logger->debug("Set language based on HTTP request headers to {0}", [$locale]);
                }

                if ($session !== null)
                    $session->set('locale', $locale);
            }

            if (!empty($locale))
                $this->variables['i18n']->setLocale($locale);
        }
    }
public function setupLocale()
    {
        // The virtual host may prescribe a language
        if (isset($this->variables['i18n']))
        {
            $vhost = $this->vhost;
            $locales = $vhost->getLocales();
            $session = $this->request->session;
            $locale = null;
            
            if ($session !== null && $session->has('locale', Type::STRING))
            {
                $locval = $session['locale'];
                foreach ($locales as $supported_locale)
                {
                    if ($locval === $supported_locale->getLocale())
                    {
                        $locale = $locval;
                        self::$logger->debug("Set language based on session variable to {0}", [$locale]);
                        break;
                    }
                }
            }

            if ($locale === null && !empty($locales))
            {
                $accept = $this->request->accept_language;
                $locale = $vhost->selectLocaleFromAcceptHeader($accept);

                if ($locale === null)
                {
                    $locale = reset($locales);
                    self::$logger->debug("Set language based on default locale {0}", [$locale]);
                }
                else
                {
                    self::$logger->debug("Set language based on HTTP request headers to {0}", [$locale]);
                }

                if ($session !== null)
                    $session->set('locale', $locale);
            }

            if (!empty($locale))
                $this->variables['i18n']->setLocale($locale);
        }
    }
public function setupLocale ( ) { // The virtual host may prescribe a language if ( isset ( $ this -> variables [ 'i18n' ] ) ) { $ vhost = $ this -> vhost ; $ locales = $ vhost -> getLocales ( ) ; $ session = $ this -> request -> session ; $ locale = null ; if ( $ session !== null && $ session -> has ( 'locale' , Type :: STRING ) ) { $ locval = $ session [ 'locale' ] ; foreach ( $ locales as $ supported_locale ) { if ( $ locval === $ supported_locale -> getLocale ( ) ) { $ locale = $ locval ; self :: $ logger -> debug ( "Set language based on session variable to {0}" , [ $ locale ] ) ; break ; } } } if ( $ locale === null && ! empty ( $ locales ) ) { $ accept = $ this -> request -> accept_language ; $ locale = $ vhost -> selectLocaleFromAcceptHeader ( $ accept ) ; if ( $ locale === null ) { $ locale = reset ( $ locales ) ; self :: $ logger -> debug ( "Set language based on default locale {0}" , [ $ locale ] ) ; } else { self :: $ logger -> debug ( "Set language based on HTTP request headers to {0}" , [ $ locale ] ) ; } if ( $ session !== null ) $ session -> set ( 'locale' , $ locale ) ; } if ( ! empty ( $ locale ) ) $ this -> variables [ 'i18n' ] -> setLocale ( $ locale ) ; } }
Set up the language / locale based on the users preferences and the
provided locales by the virtual host.

When neither the user or the virtual host specifies any locale,
the default is maintained.
Set up the language / locale based on the users preferences and the provided locales by the virtual host .