See parent task. This is a bug against core, bugs for extensions, if needed, should be subtasks of this one.
Description
Details
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Open | None | T11968 Reduce use of global and public variables | |||
| Open | None | T159283 Deprecate non-configuration globals | |||
| Open | MGChecker | T160814 Deprecate $wgLang | |||
| Open | None | T160806 Remove and replace $wgLang in extensions under the social tools umbrella | |||
| Open | None | T419848 Remove uses of $wgLang from WMF-deployed extension | |||
| Open | None | T344050 [SPIKE] WikibaseClient SidebarLinkBadgeDisplay inappropriately uses user language for parser output | |||
| Open | None | T421656 Remove $wgLang from non-WMF-deployed extensions |
Event Timeline
One of the more prominent uses in core comes from ContentHandler, seen in most page views when enabling verbose logging:
[wfDebug] [DEBUG] Unstubbing $wgLang on call of $wgLang::unstub from ContentHandler->getPageLanguage
Change 598143 had a related patch set uploaded (by Krinkle; owner: DannyS712):
[mediawiki/core@master] ParserOptionsTest: Rename non-global variable $wgLang
Change 598143 merged by jenkins-bot:
[mediawiki/core@master] ParserOptionsTest: Rename non-global variable $wgLang
@DannyS712 I think most if not all uses of $wgLang are basically safe to replace with something like $userLang = RequestContext::getMain()->getLanguage();. Would you be interested in giving this a try in core and/or some of the deployed extension repos?
I have a lot on my plate right now, but sure, will look into it. Deliberately *not* claiming this task yet
Change 674845 had a related patch set uploaded (by DannyS712; author: DannyS712):
[mediawiki/core@master] FileDeleteForm: remove use of $wgLang
Change 674845 merged by jenkins-bot:
[mediawiki/core@master] FileDeleteForm: Remove use of $wgLang
Since T244383: Replace StubUserLang with a better lazy loading mechanism was closed as duplicate, I urge to increase priority of this task. StubUserLang keeps causing severe issues. Search for StubUserLang in Wikimedia-production-error yields about 20 tasks.
Change 710570 had a related patch set uploaded (by Zabe; author: Zabe):
[mediawiki/core@master] FeedUtils: remove usage of $wgLang
Change 710570 merged by jenkins-bot:
[mediawiki/core@master] FeedUtils: remove usage of $wgLang
Change 936802 had a related patch set uploaded (by Tim Starling; author: Tim Starling):
[mediawiki/core@master] Remove $wgLang usage from Title
Change 936802 merged by jenkins-bot:
[mediawiki/core@master] Remove $wgLang usage from Title
Change #1239481 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Disallow calling MessageCache::get with a boolean language parameter
Change #1239490 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Remove reading from $wgLang from installer
Change #1239481 merged by jenkins-bot:
[mediawiki/core@master] Disallow calling MessageCache::get with a boolean language parameter
Change #1239560 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Deprecate calling FileRepo::getDescriptionText without lang parameter
Change #1239560 merged by jenkins-bot:
[mediawiki/core@master] Deprecate calling FileRepo::getDescriptionText without lang parameter
Change #1250615 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Inject language into MediaHandlers rather than relying on wgLang
Change #1239490 merged by jenkins-bot:
[mediawiki/core@master] Remove reading from $wgLang from installer
Change #1254408 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Remove use of wgLang from SpecialVersion
Change #1254462 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Replace diverse wgLang reads using RequestContext
Change #1254462 merged by jenkins-bot:
[mediawiki/core@master] Replace diverse wgLang reads using RequestContext
Change #1254408 merged by jenkins-bot:
[mediawiki/core@master] Remove use of wgLang from SpecialVersion
Change #1250615 merged by jenkins-bot:
[mediawiki/core@master] Inject language into MediaHandlers rather than relying on wgLang
Change #1271072 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] [DNM] Drop remaining reads from $wgLang
Since extension code should not come into play in the installer, what do you think about trying to remove writing to wgLang there completely?
Otherwise, one of the next steps would be to have $wgLang emit deprecation warnings in 1.47, in a similar manner $wgUser did for quite a while. In WMF extensions, only a certain Wikibase service remains which does not have a fix merged or under review.
Change #1271806 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] No longer write to wgLang in installer
Change #1273753 had a related patch set uploaded (by MGChecker; author: MGChecker):
[mediawiki/core@master] Replace use of $wgLang in test code
Change #1273753 merged by jenkins-bot:
[mediawiki/core@master] Replace use of $wgLang in test code
Change #1271072 merged by jenkins-bot:
[mediawiki/core@master] Drop remaining reads from $wgLang and deprecate
Change #1271806 merged by jenkins-bot:
[mediawiki/core@master] No longer write to wgLang in installer
The soft-deprecation is now completed: There are no more callsites in core, a single, trickier one in a wmf-deployed extension for which a change is awaiting review, and the next version of codesniffer will include a rule against global
This only leaves emitting warnings (which is somewhat fiddly for globals...), before eventual removal in MW 1.5X.