throw new MWException( "Invalid fallback sequence for language '$code'" );
}
+ /**
+ * Intended for tests that may change configuration in a way that invalidates caches.
+ *
+ * @since 1.32
+ */
+ public static function clearCaches() {
+ if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ throw new MWException( __METHOD__ . ' must not be used outside tests' );
+ }
+ self::$dataCache = null;
+ // Reinitialize $dataCache, since it's expected to always be available
+ self::getLocalisationCache();
+ self::$mLangObjCache = [];
+ self::$fallbackLanguageCache = [];
+ self::$grammarTransformations = null;
+ self::$languageNameCache = null;
+ }
+
/**
* Checks whether any localisation is available for that language tag
* in MediaWiki (MessagesXx.php exists).
# Add 543 years to the Gregorian calendar
# Months and days are identical
$gy_offset = $gy + 543;
+ # fix for dates between 1912 and 1941
+ # https://en.wikipedia.org/?oldid=836596673#New_year
+ if ( $gy >= 1912 && $gy <= 1940 ) {
+ if ( $gm <= 3 ) {
+ $gy_offset--;
+ }
+ $gm = ( $gm - 3 ) % 12;
+ }
} elseif ( ( !strcmp( $cName, 'minguo' ) ) || !strcmp( $cName, 'juche' ) ) {
# Minguo dates
# Deduct 1911 years from the Gregorian calendar
* Take a list of strings and build a locale-friendly comma-separated
* list, using the local comma-separator message.
* The last two strings are chained with an "and".
- * NOTE: This function will only work with standard numeric array keys (0, 1, 2…)
*
- * @param string[] $l
+ * @param string[] $list
* @return string
*/
- function listToText( array $l ) {
- $m = count( $l ) - 1;
- if ( $m < 0 ) {
+ public function listToText( array $list ) {
+ $itemCount = count( $list );
+ if ( $itemCount < 1 ) {
return '';
}
- if ( $m > 0 ) {
+ $text = array_pop( $list );
+ if ( $itemCount > 1 ) {
$and = $this->msg( 'and' )->escaped();
$space = $this->msg( 'word-separator' )->escaped();
- if ( $m > 1 ) {
+ $comma = '';
+ if ( $itemCount > 2 ) {
$comma = $this->msg( 'comma-separator' )->escaped();
}
+ $text = implode( $comma, $list ) . $and . $space . $text;
}
- $s = $l[$m];
- for ( $i = $m - 1; $i >= 0; $i-- ) {
- if ( $i == $m - 1 ) {
- $s = $l[$i] . $and . $space . $s;
- } else {
- $s = $l[$i] . $comma . $s;
- }
- }
- return $s;
+ return $text;
}
/**
* @return string
*/
function truncate( $string, $length, $ellipsis = '...', $adjustLength = true ) {
+ wfDeprecated( __METHOD__, '1.31' );
return $this->truncateForDatabase( $string, $length, $ellipsis, $adjustLength );
}
* @return bool
*/
public function equals( Language $lang ) {
- return $lang->getCode() === $this->mCode;
+ return $lang === $this || $lang->getCode() === $this->mCode;
}
/**