Page MenuHomePhabricator

Remove replacement of DummyLanguageCodes from LanguageFactory::getLanguage
Open, Needs TriagePublic

Description

Currently LanguageFactory::getLanguage accepts nearly all language codes and uses them as internal language code because LanguageNameUtils::isValidCode makes only a weak input validation. Example:

> print MediaWiki\MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 's!r@n%e' )->getCode()
s!r@n%e

But some deprecated language codes get replaced:

> print MediaWiki\MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'als' )->getCode()
gsw

At some places even deprecated language codes are useful like in T315665: Dummy language codes are not usable on Special:AllMessages. Therefor the replacement of deprecated language codes should happen on direct on the input validation of external values like the URL parameter uselang and not in LanguageFactory::getLanguage.

Event Timeline

Change 828900 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/extensions/Wikibase@master] Use 'lzh' instead of 'zh-classical' in test cases

https://gerrit.wikimedia.org/r/828900

Change 828802 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] Move replacement of DummyLanguageCodes from LanguageFactory to RequestContext

https://gerrit.wikimedia.org/r/828802

Change 829265 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] Deprecate replacement of DummyLanguageCodes in LanguageFactory::getLanguage

https://gerrit.wikimedia.org/r/829265