Merge "Cleaning up function definitions in Language.php"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 2 Apr 2014 18:29:40 +0000 (18:29 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 2 Apr 2014 18:29:40 +0000 (18:29 +0000)
1  2 
languages/Language.php

diff --combined languages/Language.php
@@@ -261,10 -261,7 +261,10 @@@ class Language 
         * @since 1.21
         */
        public static function isSupportedLanguage( $code ) {
 -              return $code === strtolower( $code ) && is_readable( self::getMessagesFileName( $code ) );
 +              return self::isValidBuiltInCode( $code )
 +                      && ( is_readable( self::getMessagesFileName( $code ) )
 +                              || is_readable( self::getJsonMessagesFileName( $code ) )
 +              );
        }
  
        /**
  
        /**
         * Returns true if a language code is of a valid form for the purposes of
 -       * internal customisation of MediaWiki, via Messages*.php.
 +       * internal customisation of MediaWiki, via Messages*.php or *.json.
         *
         * @param $code string
         *
  
        /**
         * Returns gender-dependent namespace alias if available.
+        * See https://www.mediawiki.org/wiki/Manual:$wgExtraGenderNamespaces
         * @param $index Int: namespace index
         * @param $gender String: gender key (male, female... )
         * @return String
        }
  
        /**
-        * Whether this language makes distinguishes genders for example in
-        * namespaces.
+        * Whether this language uses gender-dependent namespace aliases.
+        * See https://www.mediawiki.org/wiki/Manual:$wgExtraGenderNamespaces
         * @return bool
         * @since 1.18
         */
                        # We do this using a foreach over the codes instead of a directory
                        # loop so that messages files in extensions will work correctly.
                        foreach ( $returnMw as $code => $value ) {
 -                              if ( is_readable( self::getMessagesFileName( $code ) ) ) {
 +                              if ( is_readable( self::getMessagesFileName( $code ) )
 +                                      || is_readable( self::getJsonMessagesFileName( $code ) )
 +                              ) {
                                        $namesMwFile[$code] = $names[$code];
                                }
                        }
 +
                        return $namesMwFile;
                }
 +
                # 'mw' option; default if it's not one of the other two options (all/mwfile)
                return $returnMw;
        }
        }
        /**
         * Provides an alternative text depending on specified gender.
-        * Usage {{gender:username|masculine|feminine|neutral}}.
+        * Usage {{gender:username|masculine|feminine|unknown}}.
         * username is optional, in which case the gender of current user is used,
         * but only in (some) interface messages; otherwise default gender is used.
         *
         * given, it will be returned unconditionally. These details are implied by
         * the caller and cannot be overridden in subclasses.
         *
-        * If more than one form is given, the default is to use the neutral one
-        * if it is specified, and to use the masculine one otherwise. These
-        * details can be overridden in subclasses.
+        * If three forms are given, the default is to use the third (unknown) form.
+        * If fewer than three forms are given, the default is to use the first (masculine) form.
+        * These details can be overridden in subclasses.
         *
         * @param $gender string
         * @param $forms array
         * @return string $prefix . $mangledCode . $suffix
         */
        public static function getFileName( $prefix = 'Language', $code, $suffix = '.php' ) {
 -              // Protect against path traversal
 -              if ( !Language::isValidCode( $code )
 -                      || strcspn( $code, ":/\\\000" ) !== strlen( $code )
 -              ) {
 +              if ( !self::isValidBuiltInCode( $code ) ) {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
  
                return $file;
        }
  
 +      /**
 +       * @param $code string
 +       * @return string
 +       * @since 1.23
 +       */
 +      public static function getJsonMessagesFileName( $code ) {
 +              global $IP;
 +
 +              if ( !self::isValidBuiltInCode( $code ) ) {
 +                      throw new MWException( "Invalid language code \"$code\"" );
 +              }
 +
 +              return "$IP/languages/i18n/$code.json" ;
 +      }
 +
        /**
         * @param $code string
         * @return string