protected function getLanguages()
    {
        // Check if we have the data in the cache.
        if (null !== $this->languageCache) {
            return $this->languageCache;
        }

        $loadedLanguage = $this->getMetaModel()->getActiveLanguage();
        $languageValues = $this->getLanguageNames($loadedLanguage);
        $languages      = $this->getRealLanguages();
        $keys           = \array_keys($languages);
        $aux            = [];
        $real           = [];

        // Fetch real language values.
        foreach ($keys as $key) {
            if (isset($languageValues[$key])) {
                $aux[$key]  = \utf8_romanize($languageValues[$key]);
                $real[$key] = $languageValues[$key];
            }
        }

        // Add needed fallback values.
        $keys = \array_diff($keys, \array_keys($aux));
        if ($keys) {
            $this->addNeededFallbackLanguages($keys, $aux, $real);
        }

        $keys = \array_diff($keys, \array_keys($aux));
        if ($keys) {
            foreach ($keys as $key) {
                $aux[$key]  = \utf8_romanize($languages[$key]);
                $real[$key] = $languages[$key];
            }
        }

        \asort($aux);
        $return = [];
        foreach (\array_keys($aux) as $key) {
            $return[$key] = $real[$key];
        }

        // Switch back to the original FE language to not disturb the frontend.
        if ($loadedLanguage != $GLOBALS['TL_LANGUAGE']) {
            $event = new LoadLanguageFileEvent('languages', null, true);
            $this->eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $event);
        }

        return $this->languageCache = $return;
    }
protected function getLanguages()
    {
        // Check if we have the data in the cache.
        if (null !== $this->languageCache) {
            return $this->languageCache;
        }

        $loadedLanguage = $this->getMetaModel()->getActiveLanguage();
        $languageValues = $this->getLanguageNames($loadedLanguage);
        $languages      = $this->getRealLanguages();
        $keys           = \array_keys($languages);
        $aux            = [];
        $real           = [];

        // Fetch real language values.
        foreach ($keys as $key) {
            if (isset($languageValues[$key])) {
                $aux[$key]  = \utf8_romanize($languageValues[$key]);
                $real[$key] = $languageValues[$key];
            }
        }

        // Add needed fallback values.
        $keys = \array_diff($keys, \array_keys($aux));
        if ($keys) {
            $this->addNeededFallbackLanguages($keys, $aux, $real);
        }

        $keys = \array_diff($keys, \array_keys($aux));
        if ($keys) {
            foreach ($keys as $key) {
                $aux[$key]  = \utf8_romanize($languages[$key]);
                $real[$key] = $languages[$key];
            }
        }

        \asort($aux);
        $return = [];
        foreach (\array_keys($aux) as $key) {
            $return[$key] = $real[$key];
        }

        // Switch back to the original FE language to not disturb the frontend.
        if ($loadedLanguage != $GLOBALS['TL_LANGUAGE']) {
            $event = new LoadLanguageFileEvent('languages', null, true);
            $this->eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $event);
        }

        return $this->languageCache = $return;
    }
protected function getLanguages ( ) { // Check if we have the data in the cache. if ( null !== $ this -> languageCache ) { return $ this -> languageCache ; } $ loadedLanguage = $ this -> getMetaModel ( ) -> getActiveLanguage ( ) ; $ languageValues = $ this -> getLanguageNames ( $ loadedLanguage ) ; $ languages = $ this -> getRealLanguages ( ) ; $ keys = \ array_keys ( $ languages ) ; $ aux = [ ] ; $ real = [ ] ; // Fetch real language values. foreach ( $ keys as $ key ) { if ( isset ( $ languageValues [ $ key ] ) ) { $ aux [ $ key ] = \ utf8_romanize ( $ languageValues [ $ key ] ) ; $ real [ $ key ] = $ languageValues [ $ key ] ; } } // Add needed fallback values. $ keys = \ array_diff ( $ keys , \ array_keys ( $ aux ) ) ; if ( $ keys ) { $ this -> addNeededFallbackLanguages ( $ keys , $ aux , $ real ) ; } $ keys = \ array_diff ( $ keys , \ array_keys ( $ aux ) ) ; if ( $ keys ) { foreach ( $ keys as $ key ) { $ aux [ $ key ] = \ utf8_romanize ( $ languages [ $ key ] ) ; $ real [ $ key ] = $ languages [ $ key ] ; } } \ asort ( $ aux ) ; $ return = [ ] ; foreach ( \ array_keys ( $ aux ) as $ key ) { $ return [ $ key ] = $ real [ $ key ] ; } // Switch back to the original FE language to not disturb the frontend. if ( $ loadedLanguage != $ GLOBALS [ 'TL_LANGUAGE' ] ) { $ event = new LoadLanguageFileEvent ( 'languages' , null , true ) ; $ this -> eventDispatcher -> dispatch ( ContaoEvents :: SYSTEM_LOAD_LANGUAGE_FILE , $ event ) ; } return $ this -> languageCache = $ return ; }
Retrieve all language names.

This method takes the fallback language into account.

@return string[]

@SuppressWarnings("PHPMD.CyclomaticComplexity")
@SuppressWarnings(PHPMD.Superglobals)
@SuppressWarnings(PHPMD.CamelCaseVariableName)
Retrieve all language names .