コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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__);
 }
コード例 #3
0
 /**
  * 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];
 }