diff options
Diffstat (limited to 'includes/htmlform/fields/HTMLSelectLanguageField.php')
-rw-r--r-- | includes/htmlform/fields/HTMLSelectLanguageField.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/includes/htmlform/fields/HTMLSelectLanguageField.php b/includes/htmlform/fields/HTMLSelectLanguageField.php new file mode 100644 index 000000000000..98cf3b19c453 --- /dev/null +++ b/includes/htmlform/fields/HTMLSelectLanguageField.php @@ -0,0 +1,36 @@ +<?php + +/** + * Language select field. + */ +class HTMLSelectLanguageField extends HTMLSelectField { + public function __construct( $params ) { + parent::__construct( $params ); + + if ( $this->mParent instanceof HTMLForm ) { + $config = $this->mParent->getConfig(); + $languageCode = $config->get( 'LanguageCode' ); + } else { + global $wgLanguageCode; + $languageCode = $wgLanguageCode; + } + + $languages = Language::fetchLanguageNames( null, 'mw' ); + + // Make sure the site language is in the list; + // a custom language code might not have a defined name⦠+ if ( !array_key_exists( $languageCode, $languages ) ) { + $languages[$languageCode] = $languageCode; + } + + ksort( $languages ); + + foreach ( $languages as $code => $name ) { + $this->mParams['options'][$code . ' - ' . $name] = $code; + } + + if ( !array_key_exists( 'default', $params ) ) { + $this->mParams['default'] = $languageCode; + } + } +} |