⚓ T376711 PHP 8.4: NumberFormatter will now throw for invalid locale
Page Menu
Phabricator
Create Task
Maniphest
T376711
PHP 8.4: NumberFormatter will now throw for invalid locale
Closed, Resolved
Public
BUG REPORT
Actions
Edit Task
Edit Related Tasks...
Create Subtask
Edit Parent Tasks
Edit Subtasks
Merge Duplicates In
Close As Duplicate
Edit Related Objects...
Edit Commits
Edit Mocks
Mute Notifications
Protect as security issue
Assigned To
Umherirrender
Authored By
Ammarpad
Oct 8 2024, 12:25 PM
2024-10-08 12:25:15 (UTC+0)
Tags
PHP 8.4 support
(MediaWiki core)
MW-1.39-release
(Blocker)
MW-1.41-release
(Blocker)
MW-1.42-release
(Blocker)
MW-1.43-release
(Not a blocker)
I18n
(Untriaged)
MediaWiki-Internationalization
(Backlog)
MW-1.44-notes (1.44.0-wmf.17; 2025-02-18)
MW-1.43-notes
MW-1.39-notes
MW-1.42-notes
LPL Onboarding and Development (Current)
(Done (Q3 2024-25))
Referenced Files
None
Subscribers
A_smart_kitten
Aklapper
Amire80
Ammarpad
Daimona
mschae23
Umherirrender
View All 9 Subscribers
Description
uselang=
hack with its values such as
qqx
and other nonstandard language codes understood by MediaWiki can leads to passing of such code as locale to
NumberFormatter
constructor.
A change in php-intl extension means this will now throw
ValueError
in PHP 8.4. (Upstream change
It will pretty much affect a lot of things that gets merged into
$wgDummyLanguageCodes
during setup.
foreach
$wgDummyLanguageCodes
as
$code
try
new
NumberFormatter
$code
NumberFormatter
::
DECIMAL
);
catch
ValueError
$e
$code
': '
$e
->
getMessage
()
\n
);
// qqq: NumberFormatter::__construct(): Argument #1 ($locale) "qqq" is invalid
// qqx: NumberFormatter::__construct(): Argument #1 ($locale) "qqx" is invalid
// cbk-zam: NumberFormatter::__construct(): Argument #1 ($locale) "cbk-zam" is invalid
// eml: NumberFormatter::__construct(): Argument #1 ($locale) "eml" is invalid
// map-bms: NumberFormatter::__construct(): Argument #1 ($locale) "map-bms" is invalid
// nrm: NumberFormatter::__construct(): Argument #1 ($locale) "nrm" is invalid
// roa-tara: NumberFormatter::__construct(): Argument #1 ($locale) "roa-tara" is invalid
// x-xss: NumberFormatter::__construct(): Argument #1 ($locale) "x-xss" is invalid
Additionally, a lot of languages selectable via the interface at Special:Preferences will suffer from the same issue.
The first language shown on Special:Preferences language dropdown selector
aae - Arbërisht
is one prime example.
Users who selected that language cannot be able to use wiki running PHP 8.4. Selecting the language from the interface would be impossible for those who have not already done so.
// Usable languages per includes/preferences/DefaultPreferencesFactory.php
$languageNameUtils
MediaWiki\MediaWikiServices
::
getInstance
()->
getLanguageNameUtils
();
$languages
$languageNameUtils
->
getLanguageNames
$languageNameUtils
::
AUTONYMS
$languageNameUtils
::
SUPPORTED
);
$i
foreach
array_keys
$languages
as
$code
try
new
NumberFormatter
$code
NumberFormatter
::
DECIMAL
);
catch
ValueError
$e
$i
++;
$i
);
// 94
Details
Related Changes in Gerrit:
Subject
Repo
Branch
Lines +/-
language: Use fallback chain to create NumberFormatter
mediawiki/core
REL1_42
+55
-14
language: Use fallback chain to create NumberFormatter
mediawiki/core
REL1_39
+55
-14
language: Use fallback chain to create NumberFormatter
mediawiki/core
REL1_43
+56
-14
language: Use fallback chain to create NumberFormatter
mediawiki/core
master
+56
-14
Customize query in gerrit
Related Objects
Mentions
Mentioned In
T421437: FY 24-25 -Annual Summary-Language Onboarding( i18n & L10 Support)
T386113: PHP 8.4: Wikibase CSVUnitStorage: fgetcsv(): the $escape parameter must be provided as its default value will change
T386108: Make PHP 8.4 voting on development (master) branch of MW ecosystem (core, vendor, extensions, skins, libraries) in CI
Mentioned Here
T376276: PHP 8.4: Implicitly nullable parameter declarations deprecated
Event Timeline
Ammarpad
created this task.
Oct 8 2024, 12:25 PM
2024-10-08 12:25:15 (UTC+0)
Restricted Application
added a subscriber:
Aklapper
View Herald Transcript
Oct 8 2024, 12:25 PM
2024-10-08 12:25:15 (UTC+0)
Reedy
renamed this task from
PHP 8.4: NumberFormater will now throw for invalid locale
to
PHP 8.4: NumberFormatter will now throw for invalid locale
Oct 8 2024, 12:26 PM
2024-10-08 12:26:51 (UTC+0)
Reedy
updated the task description.
(Show Details)
Ammarpad
updated the task description.
(Show Details)
Oct 8 2024, 12:27 PM
2024-10-08 12:27:33 (UTC+0)
Reedy
added projects:
LPL Onboarding and Development
MW-1.39-release
MW-1.41-release
MW-1.42-release
MW-1.43-release
Oct 8 2024, 4:22 PM
2024-10-08 16:22:34 (UTC+0)
Universal_Omega
subscribed.
Oct 21 2024, 3:39 PM
2024-10-21 15:39:32 (UTC+0)
Reedy
moved this task from
Backlog
to
MediaWiki core
on the
PHP 8.4 support
board.
Oct 27 2024, 9:23 PM
2024-10-27 21:23:39 (UTC+0)
MaryMunyoki
assigned this task to
Amire80
Oct 29 2024, 5:58 PM
2024-10-29 17:58:23 (UTC+0)
MaryMunyoki
edited projects, added
I18n
LPL Onboarding and Development (Current)
; removed
LPL Onboarding and Development
MSantos
moved this task from
Blocker
to
Not a blocker
on the
MW-1.43-release
board.
Oct 30 2024, 4:08 PM
2024-10-30 16:08:58 (UTC+0)
MaryMunyoki
moved this task from
Incoming Requests
to
Potential Next
on the
LPL Onboarding and Development (Current)
board.
Nov 13 2024, 6:04 PM
2024-11-13 18:04:55 (UTC+0)
Daimona
subscribed.
Nov 25 2024, 3:57 PM
2024-11-25 15:57:00 (UTC+0)
Umherirrender
updated the task description.
(Show Details)
Dec 13 2024, 6:25 PM
2024-12-13 18:25:18 (UTC+0)
gerritbot
added a comment.
Dec 13 2024, 8:13 PM
2024-12-13 20:13:24 (UTC+0)
Comment Actions
Change #1103451 had a related patch set uploaded (by Umherirrender; author: Umherirrender):
[mediawiki/core@master] language: Use fallback chain to create NumberFormatter
gerritbot
added a project:
Patch-For-Review
Dec 13 2024, 8:13 PM
2024-12-13 20:13:25 (UTC+0)
Umherirrender
subscribed.
Dec 13 2024, 8:27 PM
2024-12-13 20:27:32 (UTC+0)
Comment Actions
Using fallback chain could be a solution
Affected languages
NumberFormatter via fallback for aae ... it => created
NumberFormatter via fallback for abs ... id => created
NumberFormatter via fallback for acf ... en => created
NumberFormatter via fallback for acm ... ar => created
NumberFormatter via fallback for ami ... zh-tw => created
NumberFormatter via fallback for ann ... en => created
NumberFormatter via fallback for apc ... ar => created
NumberFormatter via fallback for atj ... fr => created
NumberFormatter via fallback for azb ... fa => created
NumberFormatter via fallback for bcc ... fa => created
NumberFormatter via fallback for bci ... fr => created
NumberFormatter via fallback for bcl ... en => created
NumberFormatter via fallback for bdr ... ms => created
NumberFormatter via fallback for btm ... id => created
NumberFormatter via fallback for bto ... en => created
NumberFormatter via fallback for bxr ... ru => created
NumberFormatter via fallback for cbk-zam ... es => created
NumberFormatter via fallback for cdo ... cdo-latn => next ... cdo-hant => next ... nan-hant => created
NumberFormatter via fallback for cdo-hant ... cdo => next ... cdo-latn => next ... nan-hant => created
NumberFormatter via fallback for cdo-latn ... cdo => next ... cdo-hant => next ... nan-hant => created
NumberFormatter via fallback for cpx ... cpx-hant => next ... cpx-hans => next ... cpx-latn => next ... cdo => next ... zh-hant => created
NumberFormatter via fallback for cpx-hans ... cpx => next ... cpx-hant => next ... cpx-latn => next ... cdo => next ... zh-hans => created
NumberFormatter via fallback for cpx-hant ... cpx => next ... cpx-hans => next ... cpx-latn => next ... cdo => next ... zh-hant => created
NumberFormatter via fallback for dag ... en => created
NumberFormatter via fallback for dga ... en => created
NumberFormatter via fallback for diq ... en => created
NumberFormatter via fallback for dty ... ne => created
NumberFormatter via fallback for eml ... it => created
NumberFormatter via fallback for eml ... it => created
NumberFormatter via fallback for fvr ... en => created
NumberFormatter via fallback for gcf ... fr => created
NumberFormatter via fallback for gcr ... fr => created
NumberFormatter via fallback for gld ... ru => created
NumberFormatter via fallback for gpe ... en => created
NumberFormatter via fallback for guw ... en => created
NumberFormatter via fallback for hke ... en => created
NumberFormatter via fallback for hno ... en => created
NumberFormatter via fallback for hrx ... de => created
NumberFormatter via fallback for hyw ... hy => created
NumberFormatter via fallback for igl ... en => created
NumberFormatter via fallback for ike-cans ... iu => created
NumberFormatter via fallback for ike-latn ... iu => created
NumberFormatter via fallback for isv-cyrl ... en => created
NumberFormatter via fallback for isv-latn ... en => created
NumberFormatter via fallback for kai ... en => created
NumberFormatter via fallback for kbp ... fr => created
NumberFormatter via fallback for kge ... id => created
NumberFormatter via fallback for kjh ... ru => created
NumberFormatter via fallback for knc ... en => created
NumberFormatter via fallback for kus ... en => created
NumberFormatter via fallback for lbe ... ru => created
NumberFormatter via fallback for lki ... fa => created
NumberFormatter via fallback for lld ... it => created
NumberFormatter via fallback for luz ... fa => created
NumberFormatter via fallback for map-bms ... jv => created
NumberFormatter via fallback for mhr ... mrj => created
NumberFormatter via fallback for mrh ... en => created
NumberFormatter via fallback for mui ... id => created
NumberFormatter via fallback for nah ... es => created
NumberFormatter via fallback for nit ... en => created
NumberFormatter via fallback for nmz ... en => created
NumberFormatter via fallback for nod ... en => created
NumberFormatter via fallback for nrm ... nrf => next ... fr => created
NumberFormatter via fallback for nup ... en => created
NumberFormatter via fallback for nys ... en => created
NumberFormatter via fallback for ojb ... en => created
NumberFormatter via fallback for olo ... fi => created
NumberFormatter via fallback for pih ... en => created
NumberFormatter via fallback for pnb ... en => created
NumberFormatter via fallback for pwn ... zh-tw => created
NumberFormatter via fallback for qqq ... en => created
NumberFormatter via fallback for rki ... en => created
NumberFormatter via fallback for rmc ... en => created
NumberFormatter via fallback for rmy ... ro => created
NumberFormatter via fallback for roa-tara ... it => created
NumberFormatter via fallback for rsk ... sr-ec => created
NumberFormatter via fallback for ruq ... ruq-latn => next ... ro => created
NumberFormatter via fallback for ruq-cyrl ... mk => created
NumberFormatter via fallback for ruq-latn ... ro => created
NumberFormatter via fallback for rut ... ru => created
NumberFormatter via fallback for ryu ... en => created
NumberFormatter via fallback for shy ... shy-latn => next ... en => created
NumberFormatter via fallback for shy-latn ... fr => created
NumberFormatter via fallback for sjd ... ru => created
NumberFormatter via fallback for sje ... en => created
NumberFormatter via fallback for skr ... skr-arab => next ... en => created
NumberFormatter via fallback for skr-arab ... skr => next ... en => created
NumberFormatter via fallback for sro ... it => created
NumberFormatter via fallback for sty ... ru => created
NumberFormatter via fallback for syl ... en => created
NumberFormatter via fallback for szy ... zh-tw => created
NumberFormatter via fallback for tay ... zh-tw => created
NumberFormatter via fallback for tdd ... en => created
NumberFormatter via fallback for ttj ... nyo => created
NumberFormatter via fallback for wls ... fr => created
NumberFormatter via fallback for xsy ... en => created
A_smart_kitten
subscribed.
Dec 25 2024, 8:50 AM
2024-12-25 08:50:34 (UTC+0)
XtexChooser
subscribed.
Jan 1 2025, 10:45 AM
2025-01-01 10:45:33 (UTC+0)
srishakatux
reassigned this task from
Amire80
to
Umherirrender
Jan 8 2025, 6:57 AM
2025-01-08 06:57:08 (UTC+0)
srishakatux
moved this task from
Potential Next
to
Needs Review
on the
LPL Onboarding and Development (Current)
board.
srishakatux
added a subscriber:
Amire80
Pppery
edited projects, added
MediaWiki-Internationalization
; removed
MediaWiki-General
Jan 9 2025, 12:25 AM
2025-01-09 00:25:55 (UTC+0)
mschae23
subscribed.
Feb 8 2025, 1:42 PM
2025-02-08 13:42:55 (UTC+0)
Jdforrester-WMF
mentioned this in
T386108: Make PHP 8.4 voting on development (master) branch of MW ecosystem (core, vendor, extensions, skins, libraries) in CI
Feb 11 2025, 3:32 PM
2025-02-11 15:32:56 (UTC+0)
Lucas_Werkmeister_WMDE
mentioned this in
T386113: PHP 8.4: Wikibase CSVUnitStorage: fgetcsv(): the $escape parameter must be provided as its default value will change
Feb 11 2025, 4:14 PM
2025-02-11 16:14:31 (UTC+0)
MaryMunyoki
edited projects, added
LPL Onboarding and Development
; removed
LPL Onboarding and Development (Current)
Feb 13 2025, 9:59 PM
2025-02-13 21:59:46 (UTC+0)
gerritbot
added a comment.
Feb 16 2025, 11:10 PM
2025-02-16 23:10:24 (UTC+0)
Comment Actions
Change #1103451
merged
by jenkins-bot:
[mediawiki/core@master] language: Use fallback chain to create NumberFormatter
ReleaseTaggerBot
added a project:
MW-1.44-notes (1.44.0-wmf.17; 2025-02-18)
Feb 17 2025, 12:00 AM
2025-02-17 00:00:38 (UTC+0)
gerritbot
added a comment.
Feb 17 2025, 9:24 PM
2025-02-17 21:24:26 (UTC+0)
Comment Actions
Change #1120233 had a related patch set uploaded (by Umherirrender; author: Umherirrender):
[mediawiki/core@REL1_43] language: Use fallback chain to create NumberFormatter
gerritbot
added a comment.
Feb 17 2025, 9:51 PM
2025-02-17 21:51:15 (UTC+0)
Comment Actions
Change #1120233
merged
by jenkins-bot:
[mediawiki/core@REL1_43] language: Use fallback chain to create NumberFormatter
ReleaseTaggerBot
added a project:
MW-1.43-notes
Feb 17 2025, 10:00 PM
2025-02-17 22:00:43 (UTC+0)
Umherirrender
closed this task as
Resolved
Feb 17 2025, 10:08 PM
2025-02-17 22:08:55 (UTC+0)
A_smart_kitten
added a comment.
Feb 17 2025, 10:28 PM
2025-02-17 22:28:47 (UTC+0)
Comment Actions
Judging by the tags on this task, should this fix also be backported to MW1.42 & MW1.39?
gerritbot
added a comment.
Feb 17 2025, 10:37 PM
2025-02-17 22:37:50 (UTC+0)
Comment Actions
Change #1120248 had a related patch set uploaded (by Umherirrender; author: Umherirrender):
[mediawiki/core@REL1_42] language: Use fallback chain to create NumberFormatter
gerritbot
added a comment.
Feb 17 2025, 10:49 PM
2025-02-17 22:49:55 (UTC+0)
Comment Actions
Change #1120249 had a related patch set uploaded (by Umherirrender; author: Umherirrender):
[mediawiki/core@REL1_39] language: Use fallback chain to create NumberFormatter
Umherirrender
added a comment.
Feb 17 2025, 10:51 PM
2025-02-17 22:51:50 (UTC+0)
Comment Actions
In
T376711#10558016
@A_smart_kitten
wrote:
Judging by the tags on this task, should this fix also be backported to MW1.42 & MW1.39?
Yes, it has a merge conflicts, but that was easy to resolve as it conflicts with the namespacing of the
Language
class in 1.43. But the patch set should work as well.
As this throws an exception in php8.4 there is no way to ignore the issue. Other deprecations like
T376276
not fixed in these releases and needs to ignore with weaker error reporting, so not sure how usable the backport is.
gerritbot
added a comment.
Feb 17 2025, 11:11 PM
2025-02-17 23:11:14 (UTC+0)
Comment Actions
Change #1120249
merged
by jenkins-bot:
[mediawiki/core@REL1_39] language: Use fallback chain to create NumberFormatter
gerritbot
added a comment.
Feb 17 2025, 11:13 PM
2025-02-17 23:13:30 (UTC+0)
Comment Actions
Change #1120248
merged
by jenkins-bot:
[mediawiki/core@REL1_42] language: Use fallback chain to create NumberFormatter
ReleaseTaggerBot
added projects:
MW-1.39-notes
MW-1.42-notes
Feb 18 2025, 12:00 AM
2025-02-18 00:00:54 (UTC+0)
MaryMunyoki
edited projects, added
LPL Onboarding and Development (Current)
; removed
LPL Onboarding and Development
Feb 24 2025, 11:40 PM
2025-02-24 23:40:54 (UTC+0)
MaryMunyoki
moved this task from
Needs Review
to
Done (Q3 2024-25)
on the
LPL Onboarding and Development (Current)
board.
Maintenance_bot
removed a project:
Patch-For-Review
Feb 25 2025, 12:30 AM
2025-02-25 00:30:27 (UTC+0)
MaryMunyoki
triaged this task as
Low
priority.
Feb 25 2025, 2:22 PM
2025-02-25 14:22:20 (UTC+0)
MaryMunyoki
mentioned this in
T421437: FY 24-25 -Annual Summary-Language Onboarding( i18n & L10 Support)
Thu, Mar 26, 7:52 PM
2026-03-26 19:52:14 (UTC+0)
Log In to Comment
Content licensed under Creative Commons Attribution-ShareAlike (CC BY-SA) 4.0 unless otherwise noted; code licensed under GNU General Public License (GPL) 2.0 or later and other open source licenses. By using this site, you agree to the Terms of Use, Privacy Policy, and Code of Conduct.
Wikimedia Foundation
Code of Conduct
Disclaimer
CC-BY-SA
GPL
Credits