}
// get the language object to process
- $langObj = isset( self::$mLangObjCache[$code] )
- ? self::$mLangObjCache[$code]
- : self::newFromCode( $code );
+ $langObj = self::$mLangObjCache[$code] ?? self::newFromCode( $code );
// merge the language object in to get it up front in the cache
self::$mLangObjCache = array_merge( [ $code => $langObj ], self::$mLangObjCache );
* language, script or variant codes actually exist in the repositories.
*
* Based on regexes by Mark Davis of the Unicode Consortium:
- * http://unicode.org/repos/cldr/trunk/tools/java/org/unicode/cldr/util/data/langtagRegex.txt
+ * https://www.unicode.org/repos/cldr/trunk/tools/java/org/unicode/cldr/util/data/langtagRegex.txt
*
* @param string $code
* @param bool $lenient Whether to allow '_' as separator. The default is only '-'.
*/
public function getNsText( $index ) {
$ns = $this->getNamespaces();
- return isset( $ns[$index] ) ? $ns[$index] : false;
+ return $ns[$index] ?? false;
}
/**
$ns = $wgExtraGenderNamespaces +
(array)self::$dataCache->getItem( $this->mCode, 'namespaceGenderAliases' );
- return isset( $ns[$index][$gender] ) ? $ns[$index][$gender] : $this->getNsText( $index );
+ return $ns[$index][$gender] ?? $this->getNsText( $index );
}
/**
function getLocalNsIndex( $text ) {
$lctext = $this->lc( $text );
$ids = $this->getNamespaceIds();
- return isset( $ids[$lctext] ) ? $ids[$lctext] : false;
+ return $ids[$lctext] ?? false;
}
/**
return $ns;
}
$ids = $this->getNamespaceIds();
- return isset( $ids[$lctext] ) ? $ids[$lctext] : false;
+ return $ids[$lctext] ?? false;
}
/**
/**
* Get an array of language names, indexed by code.
* @param null|string $inLanguage Code of language in which to return the names
- * Use null for autonyms (native names)
+ * Use null for autonyms (native names)
* @param string $include One of:
- * 'all' all available languages
- * 'mw' only if the language is defined in MediaWiki or wgExtraLanguageNames (default)
- * 'mwfile' only if the language is in 'mw' *and* has a message file
- * @return array Language code => language name
+ * 'all' all available languages
+ * 'mw' only if the language is defined in MediaWiki or wgExtraLanguageNames (default)
+ * 'mwfile' only if the language is in 'mw' *and* has a message file
+ * @return array Language code => language name (sorted by key)
* @since 1.20
*/
public static function fetchLanguageNames( $inLanguage = null, $include = 'mw' ) {
* 'all' all available languages
* 'mw' only if the language is defined in MediaWiki or wgExtraLanguageNames (default)
* 'mwfile' only if the language is in 'mw' *and* has a message file
- * @return array Language code => language name
+ * @return array Language code => language name (sorted by key)
*/
private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) {
global $wgExtraLanguageNames, $wgUsePigLatinVariant;
* Gets directionality of the first strongly directional codepoint, for embedBidi()
*
* This is the rule the BIDI algorithm uses to determine the directionality of
- * paragraphs ( http://unicode.org/reports/tr9/#The_Paragraph_Level ) and
- * FSI isolates ( http://unicode.org/reports/tr9/#Explicit_Directional_Isolates ).
+ * paragraphs ( https://www.unicode.org/reports/tr9/#The_Paragraph_Level ) and
+ * FSI isolates ( https://www.unicode.org/reports/tr9/#Explicit_Directional_Isolates ).
*
* TODO: Does not handle BIDI control characters inside the text.
* TODO: Does not handle unallocated characters.
global $wgAllUnicodeFixes;
$s = UtfNormal\Validator::cleanUp( $s );
if ( $wgAllUnicodeFixes ) {
- $s = $this->transformUsingPairFile( 'normalize-ar.ser', $s );
- $s = $this->transformUsingPairFile( 'normalize-ml.ser', $s );
+ $s = $this->transformUsingPairFile( 'normalize-ar.php', $s );
+ $s = $this->transformUsingPairFile( 'normalize-ml.php', $s );
}
return $s;
* @throws MWException
* @return string
*/
- function transformUsingPairFile( $file, $string ) {
+ protected function transformUsingPairFile( $file, $string ) {
if ( !isset( $this->transformData[$file] ) ) {
- $data = wfGetPrecompiledData( $file );
- if ( $data === false ) {
- throw new MWException( __METHOD__ . ": The transformation file $file is missing" );
- }
+ global $IP;
+ $data = require "$IP/languages/data/{$file}";
$this->transformData[$file] = new ReplacementArray( $data );
}
return $this->transformData[$file]->replace( $string );
* @param int $length Maximum length (including ellipsis)
* @param string $ellipsis String to append to the truncated text
* @param bool $adjustLength Subtract length of ellipsis from $length.
- * $adjustLength was introduced in 1.18, before that behaved as if false.
+ * $adjustLength was introduced in 1.18, before that behaved as if false.
* @return string
*/
function truncate( $string, $length, $ellipsis = '...', $adjustLength = true ) {
if ( $gender === 'female' ) {
return $forms[1];
}
- return isset( $forms[2] ) ? $forms[2] : $forms[0];
+ return $forms[2] ?? $forms[0];
}
/**