/**
  * @param mixed $current_language_code Currently selected language
  */
 function __initialize($current_language_code = false)
 {
     parent::__initialize();
     $this->script("Locale_Settings_Init();");
     $this->setData('role', 'language');
     if ($current_language_code) {
         if ($current_language_code instanceof CultureInfo) {
             $lang = $current_language_code->ResolveToLanguage();
         } else {
             $lang = Localization::getLanguageCulture($current_language_code);
         }
         if (!$lang) {
             $lang = Localization::detectCulture()->ResolveToLanguage();
         }
         $this->SetCurrentValue($lang->Code);
     }
     foreach (getAvailableLanguages() as $code) {
         $lang = Localization::getLanguageCulture($code);
         $this->AddOption($code, "{$lang->NativeName} ({$lang->EnglishName})");
     }
 }
 /**
  * Returns a list of option elements.
  * 
  * Called via AJAX to dynamically update the control.
  * @attribute[RequestParam('language','string')]
  * @param string $language Language code
  * @return <AjaxResponse::Text> Html string with options
  */
 public function ListOptions($language)
 {
     $lang = Localization::getLanguageCulture($language);
     if (!$lang) {
         $lang = Localization::getLanguageCulture('en');
     }
     $regions = $lang->GetRegions(true);
     $sorted = array();
     foreach ($regions as $code) {
         $sorted[$code] = array("name" => getString("TXT_COUNTRY_" . strtoupper($code)), "code", $code);
     }
     uasort($sorted, "RegionSelect::compareCountryNames");
     $res = array();
     foreach ($sorted as $code => $item) {
         $res[] = "<option value='{$code}'>{$item['name']}</option>";
     }
     return implode("\n", $res);
 }