Remove usages of deprecated Language methods

Change-Id: Iad3375b141b1d87c890baec6ecd16ed92f93e699
This commit is contained in:
Petr Pchelko 2020-01-03 15:03:14 -08:00 committed by Krinkle
parent 4f98a95aa1
commit 204fa7e509
40 changed files with 216 additions and 79 deletions

View file

@ -1220,10 +1220,11 @@ function wfGetLangObj( $langcode = false ) {
}
global $wgLanguageCode;
$services = MediaWikiServices::getInstance();
if ( $langcode === true || $langcode === $wgLanguageCode ) {
# $langcode is the language code of the wikis content language object.
# or it is a boolean and value is true
return MediaWikiServices::getInstance()->getContentLanguage();
return $services->getContentLanguage();
}
global $wgLang;
@ -1233,15 +1234,15 @@ function wfGetLangObj( $langcode = false ) {
return $wgLang;
}
$validCodes = array_keys( Language::fetchLanguageNames() );
$validCodes = array_keys( $services->getLanguageNameUtils()->getLanguageNames() );
if ( in_array( $langcode, $validCodes ) ) {
# $langcode corresponds to a valid language.
return MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( $langcode );
return $services->getLanguageFactory()->getLanguage( $langcode );
}
# $langcode is a string, but not a valid language code; use content language.
wfDebug( "Invalid language code passed to wfGetLangObj, falling back to content language.\n" );
return MediaWikiServices::getInstance()->getContentLanguage();
return $services->getContentLanguage();
}
/**

View file

@ -534,7 +534,9 @@ return [
$logger,
[ 'useDB' => $mainConfig->get( 'UseDatabaseMessages' ) ],
$services->getLanguageFactory(),
$services->getLocalisationCache()
$services->getLocalisationCache(),
$services->getLanguageNameUtils(),
$services->getLanguageFallback()
);
},
@ -740,7 +742,8 @@ return [
$services->getLinkRendererFactory()->create(),
$services->getNamespaceInfo(),
$services->getPermissionManager(),
$services->getLanguageConverterFactory()->getLanguageConverter()
$services->getLanguageConverterFactory()->getLanguageConverter(),
$services->getLanguageNameUtils()
);
$factory->setLogger( LoggerFactory::getInstance( 'preferences' ) );

View file

@ -207,7 +207,9 @@ class Xml {
global $wgLanguageCode;
$include = $customisedOnly ? 'mwfile' : 'mw';
$languages = Language::fetchLanguageNames( $inLanguage, $include );
$languages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( $inLanguage, $include );
// Make sure the site language is in the list;
// a custom language code might not have a defined name...

View file

@ -281,7 +281,7 @@ class InfoAction extends FormlessAction {
$pageLang = $title->getPageLanguage()->getCode();
$pageLangHtml = $pageLang . ' - ' .
Language::fetchLanguageName( $pageLang, $lang->getCode() );
$services->getLanguageNameUtils()->getLanguageName( $pageLang, $lang->getCode() );
// Link to Special:PageLanguage with pre-filled page title if user has permissions
$permissionManager = $services->getPermissionManager();
if ( $config->get( 'PageLanguageUseDB' )

View file

@ -658,6 +658,7 @@ class ApiParse extends ApiBase {
}
private function formatLangLinks( $links ) {
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$result = [];
foreach ( $links as $link ) {
$entry = [];
@ -668,13 +669,13 @@ class ApiParse extends ApiBase {
if ( $title ) {
$entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
// localised language name in 'uselang' language
$entry['langname'] = Language::fetchLanguageName(
$entry['langname'] = $languageNameUtils->getLanguageName(
$title->getInterwiki(),
$this->getLanguage()->getCode()
);
// native language name
$entry['autonym'] = Language::fetchLanguageName( $title->getInterwiki() );
$entry['autonym'] = $languageNameUtils->getLanguageName( $title->getInterwiki() );
}
ApiResult::setContentValue( $entry, 'title', $bits[1] );
$result[] = $entry;

View file

@ -35,16 +35,15 @@ class ApiQueryAllMessages extends ApiQueryBase {
public function execute() {
$params = $this->extractRequestParams();
$services = MediaWikiServices::getInstance();
if ( $params['lang'] === null ) {
$langObj = $this->getLanguage();
} elseif ( !Language::isValidCode( $params['lang'] ) ) {
} elseif ( !$services->getLanguageNameUtils()->isValidCode( $params['lang'] ) ) {
$this->dieWithError(
[ 'apierror-invalidlang', $this->encodeParamName( 'lang' ) ], 'invalidlang'
);
} else {
$langObj = MediaWikiServices::getInstance()->getLanguageFactory()
->getLanguage( $params['lang'] );
$langObj = $services->getLanguageFactory()->getLanguage( $params['lang'] );
}
if ( $params['enableparser'] ) {
@ -62,7 +61,8 @@ class ApiQueryAllMessages extends ApiQueryBase {
// Determine which messages should we print
if ( in_array( '*', $params['messages'] ) ) {
$message_names = Language::getMessageKeysFor( $langObj->getCode() );
$message_names = $services->getLocalisationCache()
->getSubitemList( $langObj->getCode(), 'messages' );
if ( $params['includelocal'] ) {
$message_names = array_unique( array_merge(
$message_names,

View file

@ -122,11 +122,13 @@ class ApiQueryLangLinks extends ApiQueryBase {
$entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
}
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
if ( isset( $prop['langname'] ) ) {
$entry['langname'] = Language::fetchLanguageName( $row->ll_lang, $params['inlanguagecode'] );
$entry['langname'] = $languageNameUtils
->getLanguageName( $row->ll_lang, $params['inlanguagecode'] );
}
if ( isset( $prop['autonym'] ) ) {
$entry['autonym'] = Language::fetchLanguageName( $row->ll_lang );
$entry['autonym'] = $languageNameUtils->getLanguageName( $row->ll_lang );
}
ApiResult::setContentValue( $entry, 'title', $row->ll_title );
$fit = $this->addPageSubItem( $row->ll_from, $entry );

View file

@ -18,6 +18,8 @@
* @file
*/
use MediaWiki\Languages\LanguageFallback;
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\MediaWikiServices;
/**
@ -81,8 +83,8 @@ class ApiQueryLanguageinfo extends ApiQueryBase {
$targetLanguageCode = $this->getLanguage()->getCode();
$include = 'all';
$availableLanguageCodes = array_keys( Language::fetchLanguageNames(
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$availableLanguageCodes = array_keys( $languageNameUtils->getLanguageNames(
// MediaWiki and extensions may return different sets of language codes
// when asked for language names in different languages;
// asking for English language names is most likely to give us the full set,
@ -156,16 +158,16 @@ class ApiQueryLanguageinfo extends ApiQueryBase {
}
if ( $includeAutonym ) {
$autonym = Language::fetchLanguageName(
$autonym = $languageNameUtils->getLanguageName(
$languageCode,
Language::AS_AUTONYMS,
LanguageNameUtils::AUTONYMS,
$include
);
$info['autonym'] = $autonym;
}
if ( $includeName ) {
$name = Language::fetchLanguageName(
$name = $languageNameUtils->getLanguageName(
$languageCode,
$targetLanguageCode,
$include
@ -174,10 +176,10 @@ class ApiQueryLanguageinfo extends ApiQueryBase {
}
if ( $includeFallbacks ) {
$fallbacks = Language::getFallbacksFor(
$fallbacks = MediaWikiServices::getInstance()->getLanguageFallback()->getAll(
$languageCode,
// allow users to distinguish between implicit and explicit 'en' fallbacks
Language::STRICT_FALLBACKS
LanguageFallback::STRICT
);
ApiResult::setIndexedTagName( $fallbacks, 'fb' );
$info['fallbacks'] = $fallbacks;

View file

@ -399,7 +399,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$params = $this->extractRequestParams();
$langCode = $params['inlanguagecode'] ?? '';
$langNames = Language::fetchLanguageNames( $langCode );
$langNames = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( $langCode );
$getPrefixes = MediaWikiServices::getInstance()->getInterwikiLookup()->getAllPrefixes( $local );
$extraLangPrefixes = $this->getConfig()->get( 'ExtraInterlanguageLinkPrefixes' );
@ -711,7 +713,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
public function appendLanguages( $property ) {
$params = $this->extractRequestParams();
$langCode = $params['inlanguagecode'] ?? '';
$langNames = Language::fetchLanguageNames( $langCode );
$langNames = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( $langCode );
$data = [];
@ -777,10 +781,11 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$data = [];
$allowed = Skin::getAllowedSkins();
$default = Skin::normalizeKey( 'default' );
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
foreach ( Skin::getSkinNames() as $name => $displayName ) {
$msg = $this->msg( "skinname-{$name}" );
$code = $this->getParameter( 'inlanguagecode' );
if ( $code && Language::isValidCode( $code ) ) {
if ( $code && $languageNameUtils->isValidCode( $code ) ) {
$msg->inLanguage( $code );
} else {
$msg->inContentLanguage();

View file

@ -20,6 +20,8 @@
* @file
*/
use MediaWiki\MediaWikiServices;
/**
* API module that facilitates changing the language of a page.
* The API equivalent of SpecialPageLanguage.
@ -114,7 +116,9 @@ class ApiSetPageLanguage extends ApiBase {
'lang' => [
ApiBase::PARAM_TYPE => array_merge(
[ 'default' ],
array_keys( Language::fetchLanguageNames( null, 'mwfile' ) )
array_keys( MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' ) )
),
ApiBase::PARAM_REQUIRED => true,
],

View file

@ -21,6 +21,8 @@
* @ingroup Cache
*/
use MediaWiki\Languages\LanguageFactory;
use MediaWiki\Languages\LanguageFallback;
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
@ -110,6 +112,10 @@ class MessageCache implements LoggerAwareInterface {
protected $langFactory;
/** @var LocalisationCache */
protected $localisationCache;
/** @var LanguageNameUtils */
protected $languageNameUtils;
/** @var LanguageFallback */
protected $languageFallback;
/**
* Get the singleton instance of this class
@ -152,6 +158,8 @@ class MessageCache implements LoggerAwareInterface {
* Default: true.
* @param LanguageFactory $langFactory
* @param LocalisationCache $localisationCache
* @param LanguageNameUtils $languageNameUtils
* @param LanguageFallback $languageFallback
*/
public function __construct(
WANObjectCache $wanCache,
@ -162,7 +170,9 @@ class MessageCache implements LoggerAwareInterface {
LoggerInterface $logger,
array $options,
LanguageFactory $langFactory,
LocalisationCache $localisationCache
LocalisationCache $localisationCache,
LanguageNameUtils $languageNameUtils,
LanguageFallback $languageFallback
) {
$this->wanCache = $wanCache;
$this->clusterCache = $clusterCache;
@ -172,6 +182,8 @@ class MessageCache implements LoggerAwareInterface {
$this->logger = $logger;
$this->langFactory = $langFactory;
$this->localisationCache = $localisationCache;
$this->languageNameUtils = $languageNameUtils;
$this->languageFallback = $languageFallback;
$this->cache = new MapCacheLRU( 5 ); // limit size for sanity
@ -1014,7 +1026,7 @@ class MessageCache implements LoggerAwareInterface {
// Try checking the database for all of the fallback languages
if ( $useDB ) {
$fallbackChain = Language::getFallbacksFor( $langcode );
$fallbackChain = $this->languageFallback->getAll( $langcode );
foreach ( $fallbackChain as $code ) {
if ( isset( $alreadyTried[$code] ) ) {
@ -1319,7 +1331,7 @@ class MessageCache implements LoggerAwareInterface {
* Mainly used after a mass rebuild
*/
public function clear() {
$langs = Language::fetchLanguageNames( null, 'mw' );
$langs = $this->languageNameUtils->getLanguageNames( null, 'mw' );
foreach ( array_keys( $langs ) as $code ) {
$this->wanCache->touchCheckKey( $this->getCheckKey( $code ) );
}
@ -1339,7 +1351,7 @@ class MessageCache implements LoggerAwareInterface {
}
$lang = array_pop( $pieces );
if ( !Language::fetchLanguageName( $lang, null, 'mw' ) ) {
if ( !$this->languageNameUtils->getLanguageName( $lang, null, 'mw' ) ) {
return [ $key, $wgLanguageCode ];
}

View file

@ -23,6 +23,7 @@
* @ingroup Content
*/
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\MediaWikiServices;
/**
@ -53,16 +54,22 @@ class WikitextContentHandler extends TextContentHandler {
public function makeRedirectContent( Title $destination, $text = '' ) {
$optionalColon = '';
$services = MediaWikiServices::getInstance();
if ( $destination->getNamespace() == NS_CATEGORY ) {
$optionalColon = ':';
} else {
$iw = $destination->getInterwiki();
if ( $iw && Language::fetchLanguageName( $iw, null, 'mw' ) ) {
if ( $iw && $services
->getLanguageNameUtils()
->getLanguageName( $iw,
LanguageNameUtils::AUTONYMS,
LanguageNameUtils::DEFINED )
) {
$optionalColon = ':';
}
}
$mwRedir = MediaWikiServices::getInstance()->getMagicWordFactory()->get( 'redirect' );
$mwRedir = $services->getMagicWordFactory()->get( 'redirect' );
$redirectText = $mwRedir->getSynonym( 0 ) .
' [[' . $optionalColon . $destination->getFullText() . ']]';

View file

@ -294,7 +294,11 @@ class RequestContext implements IContextSource, MutableContext {
$code = strtolower( $code );
# Validate $code
if ( !$code || !Language::isValidCode( $code ) || $code === 'qqq' ) {
if ( !$code
|| !MediaWikiServices::getInstance()->getLanguageNameUtils()
->isValidCode( $code )
|| $code === 'qqq'
) {
$code = $wgLanguageCode;
}

View file

@ -1,5 +1,7 @@
<?php
use MediaWiki\MediaWikiServices;
/**
* Language select field.
*/
@ -15,7 +17,9 @@ class HTMLSelectLanguageField extends HTMLSelectField {
$languageCode = $wgLanguageCode;
}
$languages = Language::fetchLanguageNames( null, 'mw' );
$languages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mw' );
// Make sure the site language is in the list;
// a custom language code might not have a defined name…

View file

@ -517,7 +517,9 @@ class WebInstaller extends Installer {
public function getAcceptLanguage() {
global $wgLanguageCode, $wgRequest;
$mwLanguages = Language::fetchLanguageNames( null, 'mwfile' );
$mwLanguages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' );
$headerLanguages = array_keys( $wgRequest->getAcceptLang() );
foreach ( $headerLanguages as $lang ) {

View file

@ -19,6 +19,8 @@
* @ingroup Installer
*/
use MediaWiki\MediaWikiServices;
class WebInstallerLanguage extends WebInstallerPage {
/**
@ -30,7 +32,9 @@ class WebInstallerLanguage extends WebInstallerPage {
$userLang = $r->getVal( 'uselang' );
$contLang = $r->getVal( 'ContLang' );
$languages = Language::fetchLanguageNames( null, 'mwfile' );
$languages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' );
$lifetime = intval( ini_get( 'session.gc_maxlifetime' ) );
if ( !$lifetime ) {
$lifetime = 1440; // PHP default
@ -103,7 +107,9 @@ class WebInstallerLanguage extends WebInstallerPage {
$select = new XmlSelect( $name, $name, $selectedCode );
$select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
$languages = Language::fetchLanguageNames( null, 'mwfile' );
$languages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' );
foreach ( $languages as $code => $lang ) {
$select->addOption( "$code - $lang", $code );
}

View file

@ -23,6 +23,8 @@
* @since 1.24
*/
use MediaWiki\MediaWikiServices;
/**
* This class formats language change log entries.
*
@ -48,9 +50,10 @@ class PageLangLogFormatter extends LogFormatter {
}
// Convert language codes to names in user language
$logOld = Language::fetchLanguageName( $oldLang, $userLang )
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$logOld = $languageNameUtils->getLanguageName( $oldLang, $userLang )
. ' (' . $oldLang . ')';
$logNew = Language::fetchLanguageName( $newLang, $userLang )
$logNew = $languageNameUtils->getLanguageName( $newLang, $userLang )
. ' (' . $newLang . ')';
// Add the default message to languages if required

View file

@ -978,7 +978,9 @@ class FormatMetadata extends ContextSource {
break;
case 'LanguageCode':
$lang = Language::fetchLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
$lang = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
$val = htmlspecialchars( $lang ?: $val );
break;
@ -1186,11 +1188,12 @@ class FormatMetadata extends ContextSource {
}
$lowLang = strtolower( $lang );
$langName = Language::fetchLanguageName( $lowLang );
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$langName = $languageNameUtils->getLanguageName( $lowLang );
if ( $langName === '' ) {
// try just the base language name. (aka en-US -> en ).
$langPrefix = explode( '-', $lowLang, 2 )[0];
$langName = Language::fetchLanguageName( $langPrefix );
$langName = $languageNameUtils->getLanguageName( $langPrefix );
if ( $langName === '' ) {
// give up.
$langName = $lang;
@ -1893,8 +1896,9 @@ class FormatMetadata extends ContextSource {
* @since 1.23
*/
protected function getPriorityLanguages() {
$priorityLanguages =
Language::getFallbacksIncludingSiteLanguage( $this->getLanguage()->getCode() );
$priorityLanguages = MediaWikiServices::getInstance()
->getLanguageFallback()
->getAllIncludingSiteLanguage( $this->getLanguage()->getCode() );
$priorityLanguages = array_merge(
(array)$this->getLanguage()->getCode(),
$priorityLanguages[0],

View file

@ -21,6 +21,7 @@
* @ingroup Media
*/
use MediaWiki\MediaWikiServices;
use MediaWiki\Shell\Shell;
use Wikimedia\ScopedCallback;
@ -547,7 +548,10 @@ class SvgHandler extends ImageHandler {
return ( $value > 0 );
} elseif ( $name == 'lang' ) {
// Validate $code
if ( $value === '' || !Language::isValidCode( $value ) ) {
if ( $value === ''
|| !MediaWikiServices::getInstance()->getLanguageNameUtils()
->isValidCode( $value )
) {
return false;
}

View file

@ -1102,7 +1102,9 @@ EOT
*/
private function createXmlOptionStringForLanguage( $lang, $selected ) {
$code = LanguageCode::bcp47( $lang );
$name = Language::fetchLanguageName( $code, $this->getContext()->getLanguage()->getCode() );
$name = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( $code, $this->getContext()->getLanguage()->getCode() );
if ( $name !== '' ) {
$display = $this->getContext()->msg( 'img-lang-opt', $code, $name )->text();
} else {

View file

@ -902,7 +902,9 @@ class CoreParserFunctions {
public static function language( $parser, $code = '', $inLanguage = '' ) {
$code = strtolower( $code );
$inLanguage = strtolower( $inLanguage );
$lang = Language::fetchLanguageName( $code, $inLanguage );
$lang = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( $code, $inLanguage );
return $lang !== '' ? $lang : LanguageCode::bcp47( $code );
}

View file

@ -23,6 +23,7 @@
use MediaWiki\BadFileLookup;
use MediaWiki\Config\ServiceOptions;
use MediaWiki\Languages\LanguageConverterFactory;
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\Linker\LinkRendererFactory;
use MediaWiki\Linker\LinkTarget;
@ -2529,8 +2530,13 @@ class Parser {
# Interwikis
if (
$iw && $this->mOptions->getInterwikiMagic() && $nottalk && (
Language::fetchLanguageName( $iw, null, 'mw' ) ||
in_array( $iw, $this->svcOptions->get( 'ExtraInterlanguageLinkPrefixes' ) )
MediaWikiServices::getInstance()->getLanguageNameUtils()
->getLanguageName(
$iw,
LanguageNameUtils::AUTONYMS,
LanguageNameUtils::DEFINED
)
|| in_array( $iw, $this->svcOptions->get( 'ExtraInterlanguageLinkPrefixes' ) )
)
) {
# T26502: filter duplicates

View file

@ -36,6 +36,7 @@ use LanguageConverter;
use MediaWiki\Auth\AuthManager;
use MediaWiki\Auth\PasswordAuthenticationRequest;
use MediaWiki\Config\ServiceOptions;
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\MediaWikiServices;
use MediaWiki\Permissions\PermissionManager;
@ -70,6 +71,9 @@ class DefaultPreferencesFactory implements PreferencesFactory {
/** @var Language The wiki's content language. */
protected $contLang;
/** @var LanguageNameUtils */
protected $languageNameUtils;
/** @var AuthManager */
protected $authManager;
@ -126,6 +130,7 @@ class DefaultPreferencesFactory implements PreferencesFactory {
* @param NamespaceInfo $nsInfo
* @param PermissionManager $permissionManager
* @param ILanguageConverter|null $languageConverter
* @param LanguageNameUtils|null $languageNameUtils
*/
public function __construct(
ServiceOptions $options,
@ -134,7 +139,8 @@ class DefaultPreferencesFactory implements PreferencesFactory {
LinkRenderer $linkRenderer,
NamespaceInfo $nsInfo,
PermissionManager $permissionManager,
ILanguageConverter $languageConverter = null
ILanguageConverter $languageConverter = null,
LanguageNameUtils $languageNameUtils = null
) {
$options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
@ -144,6 +150,8 @@ class DefaultPreferencesFactory implements PreferencesFactory {
$this->linkRenderer = $linkRenderer;
$this->nsInfo = $nsInfo;
$this->permissionManager = $permissionManager;
$this->languageNameUtils = $languageNameUtils ??
MediaWikiServices::getInstance()->getLanguageNameUtils();
$this->logger = new NullLogger();
$this->languageConverter = DeprecationHelper::newArgumentWithDeprecation(
__METHOD__,
@ -448,7 +456,7 @@ class DefaultPreferencesFactory implements PreferencesFactory {
];
}
$languages = $services->getLanguageNameUtils()->getLanguageNames( null, 'mwfile' );
$languages = $this->languageNameUtils->getLanguageNames( null, 'mwfile' );
$languageCode = $this->options->get( 'LanguageCode' );
if ( !array_key_exists( $languageCode, $languages ) ) {
$languages[$languageCode] = $languageCode;

View file

@ -1,5 +1,7 @@
<?php
use MediaWiki\MediaWikiServices;
/**
* Represents a single site.
*
@ -463,7 +465,11 @@ class Site implements Serializable {
* @param string|null $languageCode
*/
public function setLanguageCode( $languageCode ) {
if ( $languageCode !== null && !Language::isValidCode( $languageCode ) ) {
if ( $languageCode !== null
&& !MediaWikiServices::getInstance()
->getLanguageNameUtils()
->isValidCode( $languageCode )
) {
throw new InvalidArgumentException( "$languageCode is not a valid language code." );
}
$this->languageCode = $languageCode;

View file

@ -93,7 +93,9 @@ class SkinTemplate extends Skin {
$ilInterwikiCode = $this->mapInterwikiToLanguage( $languageLinkTitle->getInterwiki() );
$ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
$ilLangName = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( $ilInterwikiCode );
if ( strval( $ilLangName ) === '' ) {
$ilDisplayTextMsg = wfMessage( "interlanguage-link-$ilInterwikiCode" );
@ -111,7 +113,7 @@ class SkinTemplate extends Skin {
// CLDR extension or similar is required to localize the language name;
// otherwise we'll end up with the autonym again.
$ilLangLocalName = Language::fetchLanguageName(
$ilLangLocalName = MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageName(
$ilInterwikiCode,
$userLang->getCode()
);

View file

@ -65,6 +65,7 @@ class SpecialMyLanguage extends RedirectSpecialArticle {
* @return Title|null
*/
public function findTitle( $subpage ) {
$services = MediaWikiServices::getInstance();
// base = title without language code suffix
// provided = the title as it was given
$base = $provided = null;
@ -76,7 +77,7 @@ class SpecialMyLanguage extends RedirectSpecialArticle {
$pos = strrpos( $subpage, '/' );
$basepage = substr( $subpage, 0, $pos );
$code = substr( $subpage, $pos + 1 );
if ( strlen( $code ) && Language::isKnownLanguageTag( $code ) ) {
if ( strlen( $code ) && $services->getLanguageNameUtils()->isKnownLanguageTag( $code ) ) {
$base = Title::newFromText( $basepage );
}
}
@ -93,7 +94,7 @@ class SpecialMyLanguage extends RedirectSpecialArticle {
}
$uiLang = $this->getLanguage();
$contLang = MediaWikiServices::getInstance()->getContentLanguage();
$contLang = $services->getContentLanguage();
if ( $uiLang->equals( $contLang ) ) {
// Short circuit when the current UI language is the

View file

@ -87,7 +87,9 @@ class SpecialPageLanguage extends FormSpecialPage {
// Building a language selector
$userLang = $this->getLanguage()->getCode();
$languages = Language::fetchLanguageNames( $userLang, 'mwfile' );
$languages = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( $userLang, 'mwfile' );
$options = [];
foreach ( $languages as $code => $name ) {
$options["$code - $name"] = $code;

View file

@ -110,7 +110,9 @@ class AllMessagesTablePager extends TablePager {
}
function getAllMessages( $descending ) {
$messageNames = Language::getLocalisationCache()->getSubitemList( 'en', 'messages' );
$messageNames = MediaWikiServices::getInstance()
->getLocalisationCache()
->getSubitemList( 'en', 'messages' );
// Normalise message names so they look like page titles and sort correctly - T86139
$messageNames = array_map( [ $this->lang, 'ucfirst' ], $messageNames );

View file

@ -119,7 +119,9 @@ abstract class LanguageConverter implements ILanguageConverter {
$this->mMainLanguageCode = $maincode;
$this->mVariants = array_diff( $variants, $wgDisabledVariants );
$this->mVariantFallbacks = $variantfallbacks;
$this->mVariantNames = Language::fetchLanguageNames();
$this->mVariantNames = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames();
$defaultflags = [
// 'S' show converted text
// '+' add rules for alltext

View file

@ -46,7 +46,8 @@ class DeleteEqualMessages extends Maintenance {
* @param array &$messageInfo
*/
protected function fetchMessageInfo( $langCode, array &$messageInfo ) {
$contLang = MediaWikiServices::getInstance()->getContentLanguage();
$services = MediaWikiServices::getInstance();
$contLang = $services->getContentLanguage();
if ( $langCode ) {
$this->output( "\n... fetching message info for language: $langCode" );
$nonContentLanguage = true;
@ -58,7 +59,7 @@ class DeleteEqualMessages extends Maintenance {
/* Based on SpecialAllmessages::reallyDoQuery #filter=modified */
$l10nCache = Language::getLocalisationCache();
$l10nCache = $services->getLocalisationCache();
$messageNames = $l10nCache->getSubitemList( 'en', 'messages' );
// Normalise message names for NS_MEDIAWIKI page_title
$messageNames = array_map( [ $contLang, 'ucfirst' ], $messageNames );
@ -112,7 +113,9 @@ class DeleteEqualMessages extends Maintenance {
// Load message information
if ( $langCode ) {
$langCodes = Language::fetchLanguageNames( null, 'mwfile' );
$langCodes = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' );
if ( $langCode === '*' ) {
// All valid lang-code subpages in NS_MEDIAWIKI that
// override the messsages in that language

View file

@ -23,6 +23,8 @@
* @author Antoine Musso <hashar at free dot fr>
*/
use MediaWiki\MediaWikiServices;
/** A general output object. Need to be overridden */
class StatsOutput {
public function formatPercent( $subset, $total, $revert = false, $accuracy = 2 ) {
@ -64,7 +66,9 @@ class WikiStatsOutput extends StatsOutput {
if ( is_array( $wgDummyLanguageCodes ) ) {
$dummyCodes = [];
foreach ( $wgDummyLanguageCodes as $dummyCode => $correctCode ) {
$dummyCodes[] = Language::fetchLanguageName( $dummyCode ) . ' (' . $dummyCode . ')';
$dummyCodes[] = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( $dummyCode ) . ' (' . $dummyCode . ')';
}
echo ', as well as the following languages that are not intended for ' .
'system message translations, usually because they redirect to other ' .

View file

@ -21,6 +21,8 @@
* @ingroup MaintenanceLanguage
*/
use MediaWiki\MediaWikiServices;
require_once __DIR__ . '/../Maintenance.php';
/**
@ -36,7 +38,9 @@ class AllTrans extends Maintenance {
}
public function execute() {
$englishMessages = array_keys( Language::getMessagesFor( 'en' ) );
$englishMessages = array_keys( MediaWikiServices::getInstance()
->getLocalisationCache()
->getItem( 'en', 'messages' ) );
foreach ( $englishMessages as $key ) {
$this->output( "$key\n" );
}

View file

@ -21,6 +21,8 @@
* @ingroup MaintenanceLanguage
*/
use MediaWiki\MediaWikiServices;
/**
* @ingroup MaintenanceLanguage
*/
@ -509,7 +511,7 @@ ENDS;
# Don't list languages without problems
continue;
}
$language = Language::fetchLanguageName( $code );
$language = MediaWikiServices::getInstance()->getLanguageNameUtils()->getLanguageName( $code );
$rows[] = "| $language || $code || $problems || " . implode( ' || ', $numbers );
}

View file

@ -23,6 +23,8 @@
* @todo Make this more useful, right now just dumps content language
*/
use MediaWiki\MediaWikiServices;
require_once __DIR__ . '/../Maintenance.php';
/**
@ -40,7 +42,10 @@ class DumpMessages extends Maintenance {
global $wgVersion;
$messages = [];
foreach ( array_keys( Language::getMessagesFor( 'en' ) ) as $key ) {
foreach ( array_keys( MediaWikiServices::getInstance()
->getLocalisationCache()
->getItem( 'en', 'messages' ) ) as $key
) {
$messages[$key] = wfMessage( $key )->text();
}
$this->output( "MediaWiki $wgVersion language file\n" );

View file

@ -21,6 +21,8 @@
* @ingroup MaintenanceLanguage
*/
use MediaWiki\MediaWikiServices;
/**
* @ingroup MaintenanceLanguage
*/
@ -66,7 +68,9 @@ class Languages {
Hooks::run( 'LocalisationIgnoredOptionalMessages',
[ &$this->mIgnoredMessages, &$this->mOptionalMessages ] );
$this->mLanguages = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
$this->mLanguages = array_keys( MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' ) );
sort( $this->mLanguages );
}
@ -119,13 +123,14 @@ class Languages {
$this->mMagicWords[$code] = [];
$this->mSpecialPageAliases[$code] = [];
$jsonfilename = Language::getJsonMessagesFileName( $code );
$services = MediaWikiServices::getInstance();
$jsonfilename = $services->getLanguageNameUtils()->getJsonMessagesFileName( $code );
if ( file_exists( $jsonfilename ) ) {
$json = Language::getLocalisationCache()->readJSONFile( $jsonfilename );
$json = $services->getLocalisationCache()->readJSONFile( $jsonfilename );
$this->mRawMessages[$code] = $json['messages'];
}
$filename = Language::getMessagesFileName( $code );
$filename = $services->getLanguageNameUtils()->getMessagesFileName( $code );
if ( file_exists( $filename ) ) {
require $filename;
if ( isset( $fallback ) ) {

View file

@ -26,6 +26,9 @@
* Output is posted from time to time on:
* https://www.mediawiki.org/wiki/Localisation_statistics
*/
use MediaWiki\MediaWikiServices;
$optionsWithArgs = [ 'output' ];
$optionsWithoutArgs = [ 'help' ];
@ -101,7 +104,9 @@ foreach ( $languages->getLanguages() as $code ) {
}
# Calculate the numbers
$language = Language::fetchLanguageName( $code );
$language = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageName( $code );
$fallback = $languages->getFallback( $code );
$messages = $languages->getMessages( $code );
$messagesNumber = count( $messages['translated'] );

View file

@ -111,7 +111,9 @@ class RebuildLocalisationCache extends Maintenance {
MediaWikiServices::getInstance()->getLanguageNameUtils()
);
$allCodes = array_keys( Language::fetchLanguageNames( null, 'mwfile' ) );
$allCodes = array_keys( MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( null, 'mwfile' ) );
if ( $this->hasOption( 'lang' ) ) {
# Validate requested languages
$codes = array_intersect( $allCodes,

View file

@ -20,6 +20,8 @@
* @file
*/
use MediaWiki\MediaWikiServices;
if ( !defined( 'MEDIAWIKI' ) ) {
die( 'Not an entry point.' );
}
@ -1331,7 +1333,9 @@ return [
'packageFiles' => [
'mediawiki.language.names.js',
[ 'name' => 'names.json', 'callback' => function ( ResourceLoaderContext $context ) {
return Language::fetchLanguageNames( $context->getLanguage(), 'all' );
return MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( $context->getLanguage(), 'all' );
} ],
],
'dependencies' => 'mediawiki.language',

View file

@ -517,7 +517,9 @@ class ApiQuerySiteinfoTest extends ApiTestCase {
* @dataProvider languagesProvider
*/
public function testLanguages( $langCode ) {
$expected = Language::fetchLanguageNames( (string)$langCode );
$expected = MediaWikiServices::getInstance()
->getLanguageNameUtils()
->getLanguageNames( (string)$langCode );
$expected = array_map(
function ( $code, $name ) {
@ -576,12 +578,13 @@ class ApiQuerySiteinfoTest extends ApiTestCase {
$expectedAllowed = Skin::getAllowedSkins();
$expectedDefault = Skin::normalizeKey( 'default' );
$languageNameUtils = MediaWikiServices::getInstance()->getLanguageNameUtils();
$i = 0;
foreach ( Skin::getSkinNames() as $name => $displayName ) {
$this->assertSame( $name, $data[$i]['code'] );
$msg = wfMessage( "skinname-$name" );
if ( $code && Language::isValidCode( $code ) ) {
if ( $code && $languageNameUtils->isValidCode( $code ) ) {
$msg->inLanguage( $code );
} else {
$msg->inContentLanguage();

View file

@ -78,8 +78,9 @@ class AvailableRightsTest extends PHPUnit\Framework\TestCase {
*/
private function checkMessagesExist( $prefix ) {
// Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
$allRights = MediaWikiServices::getInstance()->getPermissionManager()->getAllPermissions();
$allMessageKeys = Language::getMessageKeysFor( 'en' );
$services = MediaWikiServices::getInstance();
$allRights = $services->getPermissionManager()->getAllPermissions();
$allMessageKeys = $services->getLocalisationCache()->getSubitemList( 'en', 'messages' );
$messagesToCheck = [];
foreach ( $allMessageKeys as $message ) {