Clean-up for r60598: introduced a global setting for non-existant languages.
authorMax Semenik <maxsem@users.mediawiki.org>
Wed, 6 Jan 2010 16:55:01 +0000 (16:55 +0000)
committerMax Semenik <maxsem@users.mediawiki.org>
Wed, 6 Jan 2010 16:55:01 +0000 (16:55 +0000)
Needs further integration into Language class, probably even getLanguageNames(), but I don't want
to mess with preferences (which also display bogus language codes, btw) or LocalisationCache yet.

config/Installer.php
includes/DefaultSettings.php

index 57e31a5..d295f88 100644 (file)
@@ -2118,34 +2118,13 @@ function aField( &$conf, $field, $text, $type = "text", $value = "", $onclick =
 }
 
 function getLanguageList() {
-       global $wgLanguageNames, $IP;
-       if( !isset( $wgLanguageNames ) ) {
-               require_once( "$IP/languages/Names.php" );
-       }
+       global $wgDummyLanguageCodes;
 
        $codes = array();
-
-       // qqq is a dummy "language" for documenting messages, other language codes are legacy/fallback.
-       $blacklist = array( 'qqq', 'als', 'be-x-old', 'dk', 'fiu-vro', 'iu', 'nb', 'simple', 'tp' );
-
-       $d = opendir( "../languages/messages" );
-       /* In case we are called from the root directory */
-       if (!$d)
-               $d = opendir( "languages/messages");
-       while( false !== ($f = readdir( $d ) ) ) {
-               $m = array();
-               if( preg_match( '/Messages([A-Z][a-z_]+)\.php$/', $f, $m ) ) {
-                       $code = str_replace( '_', '-', strtolower( $m[1] ) );
-                       if( in_array( $code, $blacklist ) ) continue;
-                       if( isset( $wgLanguageNames[$code] ) ) {
-                               $name = wfBCP47( $code ) . ' - ' . $wgLanguageNames[$code];
-                       } else {
-                               $name = $code;
-                       }
-                       $codes[$code] = $name;
-               }
+       foreach ( Language::getLanguageNames() as $code => $name ) {
+               if( in_array( $code, $wgDummyLanguageCodes ) ) continue;
+               $codes[$code] = $code . ' - ' . $name;
        }
-       closedir( $d );
        ksort( $codes );
        return $codes;
 }
index b4659a8..29b83f7 100644 (file)
@@ -861,6 +861,13 @@ $wgHideInterlanguageLinks = false;
 /** List of language names or overrides for default names in Names.php */
 $wgExtraLanguageNames = array();
 
+/**
+ * List of language codes that don't correspond to an actual language.
+ * These codes are leftoffs from renames, or other legacy things.
+ * Also, qqq is a dummy "language" for documenting messages.
+ */
+$wgDummyLanguageCodes = array( 'qqq', 'als', 'be-x-old', 'dk', 'fiu-vro', 'iu', 'nb', 'simple', 'tp' );
+
 /** We speak UTF-8 all the time now, unless some oddities happen */
 $wgInputEncoding  = 'UTF-8';
 $wgOutputEncoding = 'UTF-8';