Re: [i18n-discuss] How to order items in a multilingual list of languages? (#20)

I think this is a good summary. A couple of additional comments.

Implicit but unstated is that endonyms are preferred to displaying in the current language, ie. `Deutsch` not `German`

The list should be in a predictable order and mostly stay in the same order (unless one alters the list, say by adding a language). This promotes familiarity. On the other hand, pulling languages such as those in Accept-Language (or defaulting selection so the list starts at the best match item in that list), as Richard suggests, is probably a good idea. Having "pull to front" items *also* appear in their natural location in the list is a good idea of the list is long (2 or more "pages")

Pulling the "most important" or most common item to the top is reasonably common. If the list of languages is strictly one of language, pulling e.g. English to the front of the list because that is the default language makes sense. If the languages are distinguished more granularly (such as Richard's example of US vs. UK English) this can produce a more annoying experience.

Ordering by Unicode's default ordering gives advantages to certain scripts (Latin in particular) and disadvantages others. If the list is not particularly long, perhaps featuring only one or two items in each script, the resulting list looks as if it is unordered and is both navigationally more difficult and can provoke negative reaction ("why is XXX considered last?")

It is often a good idea to provide affordances, such as tooltips, showing the names in the currently selected language and/or the language tag. Here's an example from our internal developer site:


Richard also brings up that long lists have different requirements or considerations than short ones. A lot of my I18N demos feature a locale chooser that can pick from the full list of CLDR supported locales. This list has hundreds of entries and is ordered by language tag. I built a custom control for this (and bear in mind that this is a I18N demo and not meant for real customers to use) which is ordered by language tag (because that is how *I* usually access the list--real users don't know their language tags necessarily). I make affordances for finding items in the list--particularly type-ahead matching/scrolling, tool tips, etc. This list can still be really hard to work with in spite of that and a real user interface would probably use other means to help organize the list for users.


GitHub Notification of comment by aphillips
Please view or discuss this issue at using your GitHub account

Sent via github-notify-ml as configured in

Received on Wednesday, 12 January 2022 17:11:02 UTC