X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=languages%2FLanguage.php;h=3a12439e6e97b745122a34f869f0dee7df6944f7;hp=f72ac1a25a9a4a6608e413705aa6f3906e5d3748;hb=b2a1a180087768674d70472cacf9349f85d21c1c;hpb=a44ae41d5806992c7b5524b8098022856f03f016 diff --git a/languages/Language.php b/languages/Language.php index f72ac1a25a..3a12439e6e 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -27,6 +27,7 @@ */ use CLDRPluralRuleParser\Evaluator; +use MediaWiki\MediaWikiServices; use Wikimedia\Assert\Assert; /** @@ -506,7 +507,8 @@ class Language { if ( is_null( $this->namespaceNames ) ) { global $wgMetaNamespace, $wgMetaNamespaceTalk, $wgExtraNamespaces; - $validNamespaces = MWNamespace::getCanonicalNamespaces(); + $validNamespaces = MediaWikiServices::getInstance()->getNamespaceInfo()-> + getCanonicalNamespaces(); $this->namespaceNames = $wgExtraNamespaces + self::$dataCache->getItem( $this->mCode, 'namespaceNames' ); @@ -744,7 +746,8 @@ class Language { */ public function getNsIndex( $text ) { $lctext = $this->lc( $text ); - $ns = MWNamespace::getCanonicalIndex( $lctext ); + $ns = MediaWikiServices::getInstance()->getNamespaceInfo()-> + getCanonicalIndex( $lctext ); if ( $ns !== null ) { return $ns; } @@ -1977,7 +1980,11 @@ class Language { $gy_offset = '元'; } $gy_offset = '昭和' . $gy_offset; - } else { + } elseif ( + ( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd >= 8 ) ) || + ( ( $gy > 1989 ) && ( $gy < 2019 ) ) || + ( ( $gy == 2019 ) && ( $gm < 5 ) ) + ) { # Heisei period $gy_gannen = $gy - 1989 + 1; $gy_offset = $gy_gannen; @@ -1985,6 +1992,14 @@ class Language { $gy_offset = '元'; } $gy_offset = '平成' . $gy_offset; + } else { + # Reiwa period + $gy_gannen = $gy - 2019 + 1; + $gy_offset = $gy_gannen; + if ( $gy_gannen == 1 ) { + $gy_offset = '元'; + } + $gy_offset = '令和' . $gy_offset; } } else { $gy_offset = $gy; @@ -2713,7 +2728,7 @@ class Language { public function uc( $str, $first = false ) { if ( $first ) { if ( $this->isMultibyte( $str ) ) { - return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 ); + return $this->mbUpperChar( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 ); } else { return ucfirst( $str ); } @@ -2722,6 +2737,28 @@ class Language { } } + /** + * Convert character to uppercase, allowing overrides of the default mb_upper + * behaviour, which is buggy in many ways. Having a conversion table can be + * useful during transitions between PHP versions where unicode changes happen. + * This can make some resources unreachable on-wiki, see discussion at T219279. + * Providing such a conversion table can allow to manage the transition period. + * + * @since 1.34 + * + * @param string $char + * + * @return string + */ + protected function mbUpperChar( $char ) { + global $wgOverrideUcfirstCharacters; + if ( array_key_exists( $char, $wgOverrideUcfirstCharacters ) ) { + return $wgOverrideUcfirstCharacters[$char]; + } else { + return mb_strtoupper( $char ); + } + } + /** * @param string $str * @return mixed|string @@ -2854,7 +2891,7 @@ class Language { } /** - * @return array + * @return string */ function fallback8bitEncoding() { return self::$dataCache->getItem( $this->mCode, 'fallback8bitEncoding' ); @@ -2996,34 +3033,6 @@ class Language { } } - /** - * @deprecated No-op since 1.28 - */ - function initEncoding() { - wfDeprecated( __METHOD__, '1.28' ); - // No-op. - } - - /** - * @param string $s - * @return string - * @deprecated No-op since 1.28 - */ - function recodeForEdit( $s ) { - wfDeprecated( __METHOD__, '1.28' ); - return $s; - } - - /** - * @param string $s - * @return string - * @deprecated No-op since 1.28 - */ - function recodeInput( $s ) { - wfDeprecated( __METHOD__, '1.28' ); - return $s; - } - /** * Convert a UTF-8 string to normal form C. In Malayalam and Arabic, this * also cleans up certain backwards-compatible sequences, converting them @@ -3697,6 +3706,7 @@ class Language { } } elseif ( $dispLen > $length && $dispLen > strlen( $ellipsis ) ) { # String in fact does need truncation, the truncation point was OK. + // @phan-suppress-next-line PhanTypeInvalidExpressionArrayDestructuring list( $ret, $openTags ) = $maybeState; // reload state $ret = $this->removeBadCharLast( $ret ); // multi-byte char fix $ret .= $ellipsis; // add ellipsis @@ -4402,18 +4412,6 @@ class Language { return $this->mHtmlCode; } - /** - * @param string $code - * @deprecated since 1.32, use Language::factory to create a new object instead. - */ - public function setCode( $code ) { - wfDeprecated( __METHOD__, '1.32' ); - $this->mCode = $code; - // Ensure we don't leave incorrect cached data lying around - $this->mHtmlCode = null; - $this->mParentLanguage = false; - } - /** * Get the language code from a file name. Inverse of getFileName() * @param string $filename $prefix . $languageCode . $suffix