Page MenuHomePhabricator

Deprecate $wgLang
Open, MediumPublic

Description

See parent task. This is a bug against core, bugs for extensions, if needed, should be subtasks of this one.

Event Timeline

Krinkle subscribed.

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

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

Change 598143 merged by jenkins-bot:
[mediawiki/core@master] ParserOptionsTest: Rename non-global variable $wgLang

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

@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?

Codesearch.

@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?

Codesearch.

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

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

Change 674845 merged by jenkins-bot:
[mediawiki/core@master] FileDeleteForm: Remove use of $wgLang

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

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

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

Change 710570 merged by jenkins-bot:

[mediawiki/core@master] FeedUtils: remove usage of $wgLang

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

Change 936802 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] Remove $wgLang usage from Title

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

Change 936802 merged by jenkins-bot:

[mediawiki/core@master] Remove $wgLang usage from Title

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

Change #1239481 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Disallow calling MessageCache::get with a boolean language parameter

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

Change #1239490 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Remove reading from $wgLang from installer

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

Change #1239481 merged by jenkins-bot:

[mediawiki/core@master] Disallow calling MessageCache::get with a boolean language parameter

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

Change #1239560 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Deprecate calling FileRepo::getDescriptionText without lang parameter

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

Change #1239560 merged by jenkins-bot:

[mediawiki/core@master] Deprecate calling FileRepo::getDescriptionText without lang parameter

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

Change #1250615 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Inject language into MediaHandlers rather than relying on wgLang

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

Change #1239490 merged by jenkins-bot:

[mediawiki/core@master] Remove reading from $wgLang from installer

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

Change #1254408 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Remove use of wgLang from SpecialVersion

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

Change #1254462 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Replace diverse wgLang reads using RequestContext

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

Change #1254462 merged by jenkins-bot:

[mediawiki/core@master] Replace diverse wgLang reads using RequestContext

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

Change #1254408 merged by jenkins-bot:

[mediawiki/core@master] Remove use of wgLang from SpecialVersion

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

Change #1250615 merged by jenkins-bot:

[mediawiki/core@master] Inject language into MediaHandlers rather than relying on wgLang

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

Change #1271072 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] [DNM] Drop remaining reads from $wgLang

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

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

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

Change #1273753 had a related patch set uploaded (by MGChecker; author: MGChecker):

[mediawiki/core@master] Replace use of $wgLang in test code

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

Change #1273753 merged by jenkins-bot:

[mediawiki/core@master] Replace use of $wgLang in test code

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

Change #1271072 merged by jenkins-bot:

[mediawiki/core@master] Drop remaining reads from $wgLang and deprecate

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

Change #1271806 merged by jenkins-bot:

[mediawiki/core@master] No longer write to wgLang in installer

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

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.