# Read language names
global $wgLanguageNames;
-require_once( dirname( __FILE__ ) . '/Names.php' );
+require_once( __DIR__ . '/Names.php' );
if ( function_exists( 'mb_strtoupper' ) ) {
mb_internal_encoding( 'UTF-8' );
/**
* @var Language
*/
- var $mLang;
+ public $mLang;
function __construct( $langobj ) { $this->mLang = $langobj; }
function autoConvertToAllVariants( $text ) { return array( $this->mLang->getCode() => $text ); }
function convert( $t ) { return $t; }
/**
* @var LanguageConverter
*/
- var $mConverter;
+ public $mConverter;
- var $mVariants, $mCode, $mLoaded = false;
- var $mMagicExtensions = array(), $mMagicHookDone = false;
+ public $mVariants, $mCode, $mLoaded = false;
+ public $mMagicExtensions = array(), $mMagicHookDone = false;
private $mHtmlCode = null;
- var $dateFormatStrings = array();
- var $mExtendedSpecialPageAliases;
+ public $dateFormatStrings = array();
+ public $mExtendedSpecialPageAliases;
protected $namespaceNames, $mNamespaceIds, $namespaceAliases;
/**
* ReplacementArray object caches
*/
- var $transformData = array();
+ public $transformData = array();
/**
* @var LocalisationCache
function listToText( array $l ) {
$s = '';
$m = count( $l ) - 1;
-
+
if ( $m === 0 ) {
return $l[0];
} elseif ( $m === 1 ) {
if ( !count( $forms ) ) {
return '';
}
+
+ // Handle explicit 0= and 1= forms
+ foreach ( $forms as $index => $form ) {
+ if ( isset( $form[1] ) && $form[1] === '=' ) {
+ if ( $form[0] === (string) $count ) {
+ return substr( $form, 2 );
+ }
+ unset( $forms[$index] );
+ }
+ }
+ $forms = array_values( $forms );
+
$pluralForm = $this->getPluralForm( $count );
$pluralForm = min( $pluralForm, count( $forms ) - 1 );
return $forms[$pluralForm];
* @return array Associative array with plural form, and plural rule as key-value pairs
*/
public function getCompiledPluralRules() {
- return self::$dataCache->getItem( strtolower( $this->mCode ), 'compiledPluralRules' );
+ $pluralRules = self::$dataCache->getItem( strtolower( $this->mCode ), 'compiledPluralRules' );
+ $fallbacks = Language::getFallbacksFor( $this->mCode );
+ if ( !$pluralRules ) {
+ foreach ( $fallbacks as $fallbackCode ) {
+ $pluralRules = self::$dataCache->getItem( strtolower( $fallbackCode ), 'compiledPluralRules' );
+ if ( $pluralRules ) {
+ break;
+ }
+ }
+ }
+ return $pluralRules;
}
/**
* @return array Associative array with plural form, and plural rule as key-value pairs
*/
public function getPluralRules() {
- return self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRules' );
+ $pluralRules = self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRules' );
+ $fallbacks = Language::getFallbacksFor( $this->mCode );
+ if ( !$pluralRules ) {
+ foreach ( $fallbacks as $fallbackCode ) {
+ $pluralRules = self::$dataCache->getItem( strtolower( $fallbackCode ), 'pluralRules' );
+ if ( $pluralRules ) {
+ break;
+ }
+ }
+ }
+ return $pluralRules;
}
/**