/** * Builds a list of the system languages which can be used in a select option * * @param string $selected Client key for the area * @param string $basePath Base path to use * * @return array List of system languages * * @since 1.0 */ protected function createLanguageList($selected, $basePath = JPATH_ROOT) { $list = array(); // Cache activation $langs = Language::getKnownLanguages($basePath); foreach ($langs as $lang => $metadata) { $option = array(); $option['text'] = $metadata['name']; $option['value'] = $lang; if ($lang == $selected) { $option['selected'] = 'selected="selected"'; } $list[] = $option; } return $list; }
/** * Test... * * @covers Joomla\Language\Language::getKnownLanguages * * @return void */ public function testGetKnownLanguages() { // This method returns a list of known languages $basePath = __DIR__ . '/data'; $localeString = 'en_GB.utf8, en_GB.UTF-8, en_GB, eng_GB, en, english, english-uk, uk, gbr, britain, england, great britain,' . ' uk, united kingdom, united-kingdom'; $option1 = array('name' => 'English (United Kingdom)', 'tag' => 'en-GB', 'rtl' => '0', 'locale' => $localeString, 'firstDay' => '0'); $listCompareEqual1 = array('en-GB' => $option1); $list = Language::getKnownLanguages($basePath); $this->assertEquals($listCompareEqual1, $list, 'Line: ' . __LINE__); }
/** * Get available languages * * @param string $key Array key * * @return array An array of published languages * * @since 11.1 */ public static function getLanguages($key = 'default') { static $languages; if (empty($languages)) { // Installation uses available languages if (Factory::getApplication()->getClientId() == 2) { $languages[$key] = array(); $knownLangs = Language::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 { $cache = Factory::getCache('com_languages', ''); if (!($languages = $cache->get('languages'))) { $db = Factory::getDBO(); $query = $db->getQuery(true); $query->select('*')->from('#__languages')->where('published=1')->order('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]; }