Page MenuHomePhabricator

Enable the user to 'pin' preferred languages (for switching language easily)
Closed, ResolvedPublic8 Estimated Story PointsFeature

Description

Feature summary (what you would like to be able to do and where):

In Wikipedia, the language dropdown shows lots of different languages with a large set of "Suggested languages at the top and all the rest sorted by continent.

The place of the links for the languages actually relevant to the user always vary and have first to be manually found by manually looking through the of the long list of languages.

Most users aren't very interested in dozens or hundreds of other language versions because they only speak one to four languages.

Enabling the user to pin a few languages they'd like to see in the always same order always at the top would make it much easier and quicker to switch between languages.

The image shows how it could look like and better illustrates what I mean:

pinned langs.png (1,092×654 px, 65 KB)

Here the user has pinned the following languages: German, French, Spanish, Simple English, English (article open is English)

Use case(s) (list the steps that you performed to discover that problem, and describe the actual underlying problem which you want to solve. Do not describe only a solution):

For example, I'd like to set English, German, simple English Wikipedia and maybe a few more that I can manage to understand and write somewhat. Just with a click I could then see whether/which of these exist and consider switching to them. THis is also useful in smaller language versions where if English is set as preferred language there, it becomes much easier to switch to the ENWP article which very often is much more comprehensive and up-to-date.

Benefits (why should this be implemented?):

Enabling the user to pin a few languages they'd like to see in the always same order always at the top would make it much easier and quicker to switch between languages.

Additionally, it makes it much much easier for users to see that a simple English Wikipedia version exists and quickly switch to it in case the article is too long and complex (one of the biggest Wikipedia problems in the real world today). It also motivates users to take a short look at that dropdown more often as they will be able to expect to find out whether it exists in their preferred alternative language(s) fairly quickly and without mental exhaustion.

One could even use blurred colors in the background of the dropdown with one color assigned to each of 10 maximum preferred languages and then color the large button accordingly so one can see without even clicking it in which of the languages it's available in. T344028: The "missing relevant languages banner" with slow loading makes the interwiki links jump down addressed parts of the problems to some extent; having pinned language would address it much further. Note that instead of uselessly showing random languages the article is not available in, that panel would then only show the pinned languages the article is not available in so as to be of actual relevance to the user. The pencil edit button allows to easily reconfigure the pinned languages in a self-explanatory way (this can also be done via the settings wheel in the bottom right).

This also incentivizes users to register on Wikipedia and log in / stay logged in because they then can configure their preferred languages and more easily switch to them.

Adding functionality for pinned languages helps the information needs of the readers and makes them stay within the Wikiverse instead of going off-site to look for the info elsewhere (e.g. to a website that explains it in simpler terms or a site that has the information that the DEWP article does not but which would be in the ENWP article) or to switch to their language version whether some info in the article is also present there to improve it if needed etc. There's many reasons for why improving language switching has lots of benefits.

UX flow

t416512-before-after-presentation.gif (1,280×719 px, 1 MB)

Entry point

  • The user opens the article language dropdown.
  • The user clicks the settings gear in the dropdown.
  • By default the Preferred languages settings surface is open.

Empty state

  • If the user has no preferred languages set, the user sees an empty configuration state.
  • The empty state explains what preferred languages do.
  • The user can search for languages to add.

Search and selection

  • The user searches by language name.
  • Matching languages appear in the results list.
  • Selected languages are added to the preferred list.
  • The preferred list is limited to up to [final number] languages.
  • The order shown is the same order the user added them.

Apply settings

  • The user confirms the selection with Apply settings.
  • Closing without applying does not save changes.

Dropdown after save

  • After saving, the article language dropdown shows a Preferred languages section at the top.
  • Preferred languages replace the heuristic Suggested section.
  • The remaining languages continue to appear in the full language list below.

Design details

Left-rail tab: "Preferred languages"
Third row in the Language settings dialog, after Display and Input.

  • Icon: language glyph (same as the article-language dropdown trigger).
  • Label: Preferred languages.
  • Description: Shown first in language menus.
  • Selected by default when Language settings opens from the article-language dropdown's gear. Other entry points keep Display as default.
  • Visual treatment matches the existing Display and Input rows.

Preferred-languages editor (right pane)

  • Label: "Add a language" (Codex cdx-field label; default Codex label tokens).
  • Help text: "Pin up to 10 languages. They appear first when you switch languages on any article." (Codex cdx-field description; default Codex description tokens).
  • Chips + search input: Codex cdx-multiselect-lookup. Chips render inline above the input in insertion order, each with a ×. Placeholder text "Type a language name…".
  • Search menu (while typing): Codex default popup menu, up to 8 items visible. Empty state inside the menu: "No matching languages found."
  • Selection status: "4 of 10 selected" (Codex cdx-field help-text slot; default help-text tokens).
  • Remove a language: click the × on its chip, or open the search menu and click the already-selected item to deselect it.

Dropdown after save

  • Section heading: "Preferred languages" (same slot where "Suggested" sits today, same heading style).
  • Shown only when the user has at least one preferred language set. Otherwise, the existing heuristic "Suggested" section renders as it does today.
  • Order: insertion order (same order the user added them). Not alphabetical, not frequency-based.
  • All preferred languages appear, up to the 10 cap.
  • Preferred languages appear even when the current article has no version in that language. Unavailable preferred languages use the treatment described in Preferred languages availability.
  • "All languages" section below is unchanged

Pinned languages cap

Screenshot 2026-04-30 at 3.01.26 PM.png (3,832×2,152 px, 642 KB)
Screenshot 2026-04-30 at 3.01.31 PM.png (3,832×2,152 px, 646 KB)
  • Triggered when the user has pinned the maximum number of languages.
  • Show inline status: 10 of 10 selected.
  • Show one hint: Remove one to add another.
  • If user focuses/searches at the limit, use the same short hint.
  • Chip remove buttons stay active.

Preferred languages availability

Screenshot 2026-04-30 at 3.04.25 PM.png (3,832×2,152 px, 584 KB)
Screenshot 2026-04-30 at 3.10.36 PM.png (3,832×2,152 px, 469 KB)
  • Keep Preferred languages as one continuous list.
  • Preserve the user’s preferred-language order.
  • Available preferred languages remain active links.
  • Unavailable preferred languages use subtle text color @color-subtle and are non-interactive/disabled in place.
  • This applies whether some or all preferred languages are unavailable.

Note: When Preferred languages are set, any “Missing in…” banner should be based on the user’s preferred languages rather than heuristic suggested languages. When no preferred languages are set, the existing Suggested languages behavior remains unchanged.

Open decisions

  • Preferred languages cap
  • Consider ways to show a temporary discoverability hint on settings gear after launch.

Details

Related Changes in Gerrit:
SubjectAuthorRepoBranchLines +/-
Abijeet Patromediawiki/extensions/UniversalLanguageSelectorwmf/1.47.0-wmf.7+1 -7
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+1 -7
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+5 -1
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+22 -2
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+18 -15
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+6 -6
Huei Tanmediawiki/extensions/ContentTranslationmaster+22 -12
Huei Tanmediawiki/extensions/UniversalLanguageSelectormaster+5 -1
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+6 -1
Abijeet Patromediawiki/extensions/Translatemaster+5 -2
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+36 -5
Abijeet Patromediawiki/extensions/UniversalLanguageSelectormaster+139 -32
Huei Tanmediawiki/extensions/UniversalLanguageSelectormaster+296 -4
Abijeet Patromediawiki/coremaster+28 -2
Huei Tanmediawiki/extensions/UniversalLanguageSelectormaster+243 -3
Show related patches Customize query in gerrit

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change #1278537 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add preferred languages settings tab

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

Change #1278537 abandoned by Huei Tan:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add preferred languages settings tab

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

I can't see that this has mentioned yet: I would strongly advise that the preferred languages be made into a global preference if the GlobalPreferences extension is installed.

I was working on a user script/gadget that did this maybe a year ago (but didn't get very far at all), and the way I was going to store the preferred languages was via a userjs-prefixed option in global preferences.

Change #1287417 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/core@master] Language selector: Add support for placeholder attributes

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

Change #1287417 merged by jenkins-bot:

[mediawiki/core@master] Language selector: Add support for placeholder attributes

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

Change #1288847 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Display preferred languages

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

I've deployed the patches for this feature on: https://bd4346ecd8.catalyst.wmcloud.org/wiki/ManyLanguages

image.png (1,930×622 px, 130 KB)

image.png (898×532 px, 70 KB)

You can login with the Bob user account, password: patchdemo1.
Go to the page https://bd4346ecd8.catalyst.wmcloud.org/wiki/ManyLanguages
Open settings and set your preferred languages
Reload the page.

Issue:

  1. Preferred language only appear after you refresh the page. Should we reload the page after changing the preferred languages?

Thanks. I am not sure I understand how I can select preferred languages. It seems this just remembers languages I have selected. Is there no way to remove languages? I might sometimes look up something in a language I do not want to have always available.

Thanks. I am not sure I understand how I can select preferred languages. It seems this just remembers languages I have selected. Is there no way to remove languages? I might sometimes look up something in a language I do not want to have always available.

Please see the task description on how it is expected to work. This feature is not ready yet and it will only be available once we enable the new language selector.

I thought one can try it at https://bd4346ecd8.catalyst.wmcloud.org/wiki/ManyLanguages

However, even if I login as bob and reload the page, I do not see "Preferred languages" setting.

Screenshot_20260520_174919.png (1,264×579 px, 195 KB)

I thought one can try it at https://bd4346ecd8.catalyst.wmcloud.org/wiki/ManyLanguages

However, even if I login as bob and reload the page, I do not see "Preferred languages" setting.

Screenshot_20260520_174919.png (1,264×579 px, 195 KB)

You need to enable the ULS rewrite in the beta features first; on that Patch Demo wiki, that wasn't done for the Bob account. I just enabled it there for Bob, and now it appears.

Now it works. I confirm one must need to reload for the settings to apply. But overall I like the feature, thanks!

Change #1277443 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add preferred languages settings tab

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

Change #1290815 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Update entrypoints to add preferred languages

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

Change #1290816 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/Translate@master] Use preferred languages in the EMPTY_SEARCH ULS Entrypoint

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

Change #1288847 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Display preferred languages

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

Change #1292685 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] Preferred language setting: Set visible language limit to 10

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

Change #1290815 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Update entrypoints to add preferred languages

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

Change #1293669 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/ContentTranslation@master] ULS rewrite: Update CX entrypoints to use preferred languages

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

Change #1290816 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Use preferred languages in the EMPTY_SEARCH ULS Entrypoint

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

Change #1292685 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] Preferred language setting: Set visible language limit to 10

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

Change #1294987 had a related patch set uploaded (by Huei Tan; author: Huei Tan):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: allow 10 preferred shown in the ULS

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

Change #1294987 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: allow 10 preferred shown in the ULS

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

Change #1293669 merged by jenkins-bot:

[mediawiki/extensions/ContentTranslation@master] ULS rewrite: Update CX entrypoints to use preferred languages

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

I noticed a potential overlooked scenario:

I have selected only Hindi as a preferred language and am currently viewing the Hindi Wikipedia. As expected, the preferred language does not appear.

image.png (1,564×801 px, 350 KB)

The suggestions or the preferred languages sections do not appear, and just the list of languages appear.

I think its best to show Hindi in this case. I'll see if its easy to do that.

Change #1296932 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Don't hide active languages from preferred languages

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

Change #1296932 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Don't hide active languages from preferred languages

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

I think its best to show Hindi in this case. I'll see if its easy to do that.

I'm not sure I agree with that. I think that in cases where there are no eligible preferred languages that can be shown – for example in the scenario you describe, or if all the preferred languages are languages that don't have a wiki in that project – it is better to show the suggested languages instead.

I agree with @jhsoby here. It doesn’t make sense to show Hindi language at Hindi Wikipedia, it makes sense to just ignore the list or show other preferred languages.

I would lean on not showing on suggested languages as I see that this preference should override that.

There are two concerns at play here:

  • Trying to provide predictability be having pinned languages always there in the same place and order
  • Not showing pinned languages when it doesn't provide value

I think both options are justified, so I am happy to go with majority preference here.

I am also leaning towards keeping it consistent as editors would put effort to set it from language settings and then not seeing it in some cases may not go well

We're currently not displaying preferred languages if the page has not been translated into any language. I think this is fine.

In addition, if there are 1-9 languages (few languages), then the preferred language is not displayed. This can be updated to display the preferred language, but in this case the dialog should be updated to a 2 column layout.

Here's a screenshot from my local machine with 2 columns:

image.png (521×430 px, 30 KB)

With a singe column:

image.png (497×429 px, 24 KB)

I have 8 preferred languages selected.

Change #1299413 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewite: Display pinned languages even when there are few languages

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

Change #1299413 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewite: Display pinned languages even when there are few languages

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

Change #1300201 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] Save preferred languages as a global preference

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

Change #1300556 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Sync preferred languages immediately after saving

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

The new input box takes up my entire (13 inch) screen (both on Safari and Chrome)

Screenshot 2026-06-12 at 14.42.19.png (2,786×940 px, 261 KB)

And it exceeds my browser window when switching to German: https://en.wikipedia.org/wiki/Olympic_Games?safemode=1&uselang=de

Screenshot 2026-06-12 at 14.42.51.png (2,818×1,004 px, 320 KB)

Change #1300201 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] Save preferred languages as a global preference

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

Change #1300556 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Sync preferred languages immediately after saving

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

Change #1302099 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Fix settings dialog width and field sizing

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

Before closing: make sure the issue with global preferences leads to bug report or documentation update.

Change #1302099 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Fix settings dialog width and field sizing

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

Change #1302743 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@wmf/1.47.0-wmf.7] ULS rewrite: Fix settings dialog width and field sizing

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

Change #1302743 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@wmf/1.47.0-wmf.7] ULS rewrite: Fix settings dialog width and field sizing

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

Mentioned in SAL (#wikimedia-operations) [2026-06-17T13:53:14Z] <lucaswerkmeister-wmde@deploy1003> Started scap sync-world: Backport for [[gerrit:1302739|ULS rewrite: Lock body scroll when open on mobile]], [[gerrit:1302743|ULS rewrite: Fix settings dialog width and field sizing (T416512)]], [[gerrit:1303010|ULS rewrite: Show variants even when no languages are available (T426532)]], [[gerrit:1303009|ULS rewrite: Capture trigger element before async module load (T429145)]], [[gerri

Mentioned in SAL (#wikimedia-operations) [2026-06-17T13:55:11Z] <lucaswerkmeister-wmde@deploy1003> lucaswerkmeister-wmde, abi: Backport for [[gerrit:1302739|ULS rewrite: Lock body scroll when open on mobile]], [[gerrit:1302743|ULS rewrite: Fix settings dialog width and field sizing (T416512)]], [[gerrit:1303010|ULS rewrite: Show variants even when no languages are available (T426532)]], [[gerrit:1303009|ULS rewrite: Capture trigger element before async module load (T429145)]], [[ge

Mentioned in SAL (#wikimedia-operations) [2026-06-17T14:12:59Z] <lucaswerkmeister-wmde@deploy1003> Finished scap sync-world: Backport for [[gerrit:1302739|ULS rewrite: Lock body scroll when open on mobile]], [[gerrit:1302743|ULS rewrite: Fix settings dialog width and field sizing (T416512)]], [[gerrit:1303010|ULS rewrite: Show variants even when no languages are available (T426532)]], [[gerrit:1303009|ULS rewrite: Capture trigger element before async module load (T429145)]], [[gerr

I came to suggest something similar, but even quicker. There seems to be space available both in Mobile and Desktop versions directly next to the language selector. If I could place buttons that would change to my other preffered language, that would be great. See mockups (the buttons are the red text, I am no designer, this is just the placement):

Screenshot_20260220_233155.png (1,980×788 px, 733 KB)

Screenshot_20260220-233639_Vivaldi.jpg (1,080×2,400 px, 775 KB)

If I selected more languages that there is space for, the last would not be shown, or something like that.

As a reference, such a feature was once proposed as part of Desktop Improvements (Vector 2022) but discarded in May 2022. See the mockup at that time: https://www.mediawiki.org/wiki/File:Sketch_of_emphasized_language_switching_options_on_a_scrolled_page_for_Desktop_improvement_project.png and https://www.mediawiki.org/wiki/File:04_-_DIP_-_Language_links_in_article_title_bar_alt.png

Nikerabbit moved this task from Need QA to Done on the LPL Essential (FY2025-26 Q3&4) board.

Feature is complete. Some polish will be done in follow-up tasks.

Thank you! Is it known when this will be deployed to wikipedia?

Thank you! Is it known when this will be deployed to wikipedia?

We are planning to deploy it this Wednesday assuming no blockers show up.