Back to LanguageHelper class

Method getLanguages

public static array
getLanguages
(mixed $key = 'default')
Get available languages
Parameters
  • string $key Array key
Returns
  • array An array of published languages
Since
  • 1.6

Method getLanguages - Source code

/**
 * Get available languages
 *
 * @param   string  $key  Array key
 *
 * @return  array  An array of published languages
 *
 * @since   1.6
 */
public static function getLanguages($key = 'default')
{
    static $languages;
    if (empty($languages)) {
        // Installation uses available languages
        if (Factory::getApplication()->isClient('installation')) {
            $languages[$key] = array();
            $knownLangs = self::getKnownLanguages(JPATH_BASE);
            foreach ($knownLangs as $metadata) {
                // Take off 3 letters iso code languages as they can't match browsers' languages and default them to en
                $obj = new \stdClass();
                $obj->lang_code = $metadata['tag'];
                $languages[$key][] = $obj;
            }
        } else {
            /** @var OutputController $cache */
            $cache = Factory::getContainer()->get(CacheControllerFactoryInterface::class)->createCacheController('output', ['defaultgroup' => 'com_languages']);
            if ($cache->contains('languages')) {
                $languages = $cache->get('languages');
            } else {
                $db = Factory::getDbo();
                $query = $db->getQuery(true)->select('*')->from($db->quoteName('#__languages'))->where($db->quoteName('published') . ' = 1')->order($db->quoteName('ordering') . ' ASC');
                $db->setQuery($query);
                $languages['default'] = $db->loadObjectList();
                $languages['sef'] = array();
                $languages['lang_code'] = array();
                if (isset($languages['default'][0])) {
                    foreach ($languages['default'] as $lang) {
                        $languages['sef'][$lang->sef] = $lang;
                        $languages['lang_code'][$lang->lang_code] = $lang;
                    }
                }
                $cache->store($languages, 'languages');
            }
        }
    }
    return $languages[$key];
}