⚓ T395997 Universal Language Selector Rewrite
Page Menu
Phabricator
Create Task
Maniphest
T395997
Universal Language Selector Rewrite
Open, High
Public
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
None
Authored By
Nikerabbit
Jun 4 2025, 9:59 AM
2025-06-04 09:59:59 (UTC+0)
Tags
Epic
UniversalLanguageSelector
(Backlog)
LPL Projects (ULS rewrite)
(Backlog)
Referenced Files
None
Subscribers
Aklapper
Bugreporter
Daimona
eunnpixie
Hakimi97
Iniquity
Izno
View All 20 Subscribers
Description
Project motivation
The Universal Language Selector (ULS) is a MediaWiki extension. Its main features are a language selector with search, support for web fonts and input methods, and entry points for changing user language, navigating to other language projects and language settings.
ULS was one of the earliest extensions created by the Language team. Over time, its aging codebase has become increasingly difficult to maintain. Any change carries a high risk of regressions, discouraging improvements or new feature development. Additionally, ULS suffers from performance issues and lacks proper dark mode support.
ULS will continue to generate technical debt and stand out from the rest of the user experience on our sites unless a full rewrite is done. With the Codex design system now stable, we believe the right time to modernize ULS is now.
Project goals
Simplification. Drop deprecated dependencies. Use Codex design system and modern JavaScript. Use native JavaScript and CSS features that were not previously available. This will make maintenance easier and enable new feature development in the future.
Unified experience. Since ULS currently lives in an extension, MediaWiki core cannot use it, and it is hard for other extensions to depend on it. The new version will be available in MediaWiki Core and should be the default language selector everywhere in MediaWiki, including mobile skins, for consistent user experience.
Extensibility. There will be a clean, performant way to extend ULS to provide entry points to other tools or modify its behavior.
Modern experience. Thanks to Codex and use of native browser features we are expecting improvements to accessibility and performance. We will get the standard dark mode support.
Non-goals
1:1 copy of existing ULS. We want to take advantage of the learnings over a decade and make changes that align with the project goals. This is a chance to do things in a better way and remove functionality that is no longer justified.
Webfonts modernization. While webfonts will be minimally supported, broader redesign is out of scope. There is a growing need to support Webfonts for issues beyond pure language support.
Updating non-MediaWiki uses of ULS. External software can continue to use jquery.uls for now, though it is in maintenance only mode already. We are hoping, but not promising, that the new language selector component can also be used outside of MediaWiki to provide a migration path away from jquery.uls.
Execution plan
Phase 0: planning (Feb-Oct 2025)
We spent time upfront clarifying scope, execution plan, dependencies, and risks. The outcome is this plan.
Phase 1: new language selector component (November-December 2025)
We will implement a new Codex-based language selector component. This component will be included in MediaWiki Core either directly or via a library.
The new language selector component has responsive design with language search. It will support single/multiple language selection and have a non-JavaScript fallback.
To support language search, we will move the language search API to MediaWiki Core.
The language selector depends on the language-data library. We will bring this library as a new dependency to MediaWiki core and provide both PHP and JavaScript interfaces to access it. This is preparatory work to allow other code to start migrating away from $.uls.data.
We will replace existing language selectors in core and in select extensions (at least in those maintained by LPL team). We will not touch the main ULS entry points yet. This will help us validate and polish core functionality in a less risky way. ULS extension will stay available with minimal changes.
Phase 2: main desktop entry point (~January-June 2025; ample time reserved for phased roll-out)
The main desktop entry point is the prominent interlanguage links (“X languages”) button in the Vector 2022 skin. We will review the entry point behavior in various use cases that depend on the availability of Wikibase, Content Translation, language variants, and the Translate extensions. This means that the button label will be different or not present in different situations.
The existing entry points of Content Translation, Translate, and Wikibase within the ULS main entry point will be updated to support the new version.
We will do the minimal work necessary to keep web fonts and input methods supported and accessible.
To allow for gradual roll-out, the new version will be behind a feature flag. It may also be conditional on a beta feature or user preference for a limited time. Tentative phased roll-out order is:
translatewiki.net
pilot wikis (TBD) as a beta feature for early feedback
special wikis
pilot wikis
rest non-Wikipedia
All Wikipedias
We are also considering this as an opportunity to move the translatable page (of the Translate extension) language switching to the main entry point out of the page content area. This is already technically possible, but requires community consultations.
Phase 3: unification and deprecation (~February-June 2026; work can start before roll-out has finished)
We will be updating support for other skins and the mobile site to use the new language selector. Old ULS code will be deprecated and we'll contact maintainers of code that uses old ULS to ask and help them to migrate. There are many extensions and gadgets, user scripts. Some of them bundle jquery.uls, some use it via the ULS extension.
We are planning to remove the unused ULS code after MediaWiki 1.46 and associated MLEB has been released.
Phase 4 (stretch goal): input methods rewrite (if time left after Phase 3)
We will rewrite jquery.uls library to be data-only vanilla JavaScript and re-write the MediaWiki integration.
Related Objects
Search...
Task Graph
Mentions
Status
Subtype
Assigned
Task
Duplicate
None
T375046
Enable Vector 2022 in Russian Wikipedia by default
Open
None
T395997
Universal Language Selector Rewrite
Mentioned In
T350503: Improve search for languages on mobile: Does not match all possible translations
T190281: On MobileFrontend, don't split to Suggested and All languages when the number of languages is very small
T348163: MobileFrontend: Indicate the number of entries in "Suggested languages"
T239609: The N'Ko language cannot be looked up by its English name in the languages search box on Mobile web
T342603: Generate the list of right-to-left languages automatically in MobileFrontend
T189036: Get MobileFrontend to use language-data
T248634: Language list name sorting on mobile should not show names that start with latin characters with diacritics at the end
T375326: "Add languages" menu does not comply with dark theme when there are no crosswiki languages
LPL Projects (ULS rewrite)
Event Timeline
Nikerabbit
created this task.
Jun 4 2025, 9:59 AM
2025-06-04 09:59:59 (UTC+0)
Restricted Application
added a subscriber:
Aklapper
View Herald Transcript
Jun 4 2025, 9:59 AM
2025-06-04 09:59:59 (UTC+0)
jhsoby
subscribed.
Jun 4 2025, 10:34 AM
2025-06-04 10:34:39 (UTC+0)
Nikerabbit
updated the task description.
(Show Details)
Jun 4 2025, 10:35 AM
2025-06-04 10:35:31 (UTC+0)
Nikerabbit
updated the task description.
(Show Details)
Jun 4 2025, 10:39 AM
2025-06-04 10:39:04 (UTC+0)
A_smart_kitten
added a project:
UniversalLanguageSelector
Jun 4 2025, 10:46 AM
2025-06-04 10:46:57 (UTC+0)
Nikerabbit
moved this task from
To triage
to
Everything else
on the
Language and Product Localization
board.
Jun 5 2025, 8:33 AM
2025-06-05 08:33:10 (UTC+0)
Nikerabbit
updated the task description.
(Show Details)
Jul 8 2025, 5:55 AM
2025-07-08 05:55:46 (UTC+0)
Nikerabbit
mentioned this in
LPL Projects (ULS rewrite)
Jul 8 2025, 12:02 PM
2025-07-08 12:02:59 (UTC+0)
Michael
subscribed.
Jul 8 2025, 3:09 PM
2025-07-08 15:09:00 (UTC+0)
Iniquity
awarded a token.
Jul 27 2025, 4:59 PM
2025-07-27 16:59:53 (UTC+0)
Iniquity
subscribed.
Daimona
subscribed.
Oct 6 2025, 2:52 PM
2025-10-06 14:52:34 (UTC+0)
thiemowmde
subscribed.
Oct 9 2025, 9:12 AM
2025-10-09 09:12:53 (UTC+0)
Tobi_WMDE_SW
subscribed.
Oct 9 2025, 9:14 AM
2025-10-09 09:14:01 (UTC+0)
Tacsipacsi
updated the task description.
(Show Details)
Oct 14 2025, 7:11 PM
2025-10-14 19:11:43 (UTC+0)
Tacsipacsi
subscribed.
Comment Actions
Please always add links. I tried to add some, but I’m not 100% sure I guessed them right.
Tentative timeline (subject to change as we make progress in planning or other maintenance work taking priority)
[…]
More discussions to create a more detailed plan with scope and approach in Jul-Aug 2025
Did this happen? If yes, where is the more detailed plan? If not yet, what is the current expected timeline?
Tacsipacsi
mentioned this in
T375326: "Add languages" menu does not comply with dark theme when there are no crosswiki languages
Oct 14 2025, 7:15 PM
2025-10-14 19:15:58 (UTC+0)
Nikerabbit
added a comment.
Oct 15 2025, 11:38 AM
2025-10-15 11:38:21 (UTC+0)
Comment Actions
We are currently reviewing the plan. More to come in a couple of weeks.
Iniquity
added a parent task:
T375046: Enable Vector 2022 in Russian Wikipedia by default
Oct 16 2025, 5:32 PM
2025-10-16 17:32:09 (UTC+0)
Nikerabbit
edited projects, added
LPL Projects (ULS rewrite)
; removed
Language and Product Localization
Oct 23 2025, 6:57 AM
2025-10-23 06:57:37 (UTC+0)
Izno
subscribed.
Oct 23 2025, 5:35 PM
2025-10-23 17:35:23 (UTC+0)
stjn
subscribed.
Oct 23 2025, 6:25 PM
2025-10-23 18:25:50 (UTC+0)
Nemoralis
subscribed.
Oct 23 2025, 9:58 PM
2025-10-23 21:58:02 (UTC+0)
Hakimi97
subscribed.
Oct 24 2025, 8:11 AM
2025-10-24 08:11:27 (UTC+0)
Johannnes89
subscribed.
Oct 31 2025, 6:24 AM
2025-10-31 06:24:45 (UTC+0)
Nikerabbit
updated the task description.
(Show Details)
Nov 5 2025, 9:30 AM
2025-11-05 09:30:00 (UTC+0)
Nikerabbit
triaged this task as
High
priority.
Nov 5 2025, 11:35 AM
2025-11-05 11:35:07 (UTC+0)
Comment Actions
I've updated the task description for the more detailed plan. There are still open questions that we will tackle as we make progress with the implementation. So far we have:
made a few proof of concept explorations and discussed technical implementation details of the language selector component
started with some pre-work such as migrating the language search API to MediaWiki core
started preparing for outreach and identifying a set of pilot wikis/communities
You can watch the
LPL Projects (ULS rewrite)
tag to follow all Phabricator activity related to this project.
jhsoby
awarded a token.
Nov 5 2025, 12:07 PM
2025-11-05 12:07:06 (UTC+0)
ToluAyo
subscribed.
Nov 5 2025, 5:07 PM
2025-11-05 17:07:30 (UTC+0)
Bugreporter
subscribed.
Nov 17 2025, 12:52 PM
2025-11-17 12:52:41 (UTC+0)
Comment Actions
Updating non-MediaWiki uses of ULS. External software can continue to use jquery.uls for now, though it is in maintenance only mode already. We are hoping, but not promising, that the new language selector component can also be used outside of MediaWiki to provide a migration path away from jquery.uls.
Note the ULS language selector is also used in WDQS, which calls Wikidata's language search API.
MBH
subscribed.
Jan 8 2026, 4:26 PM
2026-01-08 16:26:02 (UTC+0)
Jdlrobson-WMF
subscribed.
Feb 10 2026, 7:26 PM
2026-02-10 19:26:59 (UTC+0)
Jdlrobson-WMF
mentioned this in
T248634: Language list name sorting on mobile should not show names that start with latin characters with diacritics at the end
Feb 10 2026, 7:28 PM
2026-02-10 19:28:38 (UTC+0)
Jdlrobson-WMF
mentioned this in
T189036: Get MobileFrontend to use language-data
Jdlrobson-WMF
mentioned this in
T342603: Generate the list of right-to-left languages automatically in MobileFrontend
Jdlrobson-WMF
mentioned this in
T239609: The N'Ko language cannot be looked up by its English name in the languages search box on Mobile web
Jdlrobson-WMF
mentioned this in
T190281: On MobileFrontend, don't split to Suggested and All languages when the number of languages is very small
Jdlrobson-WMF
mentioned this in
T348163: MobileFrontend: Indicate the number of entries in "Suggested languages"
Jdlrobson-WMF
mentioned this in
T350503: Improve search for languages on mobile: Does not match all possible translations
Peterxy12
subscribed.
Wed, Apr 1, 3:45 AM
2026-04-01 03:45:34 (UTC+0)
eunnpixie
subscribed.
Thu, Apr 2, 12:31 AM
2026-04-02 00:31:42 (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