views:

110

answers:

4

Our application is being translated into a number of languages, and we need to have a combo box that lists the possible languages. We'd like to use the name of the language in that language (e.g. Français for French).

Is there any "proper" order for listing these languages? Do we alphabetize them based on their English names?

Update: Here is my current list (I want to explore the Unicode Collating Algorithm that Brian Campbell mentioned):

"العربية",
"中文",
"Nederlands",
"English",
"Français",
"Deutsch",
"日本語",
"한국어",
"Polski",
"Русский язык",
"Español",
"ภาษาไทย"

Update 2: Here is the list generated by the ICU Demonstration tool, sorting for an en-US locale.

Deutsch
English 
Español
Français
Nederlands
Polski
Русский язык
العربية
ภาษาไทย
한국어
中文 
日本語
+4  A: 

I would say it depends on the length of your list.

If you have 5 languages (or any number which easily fits into the dropdown without scrolling) then I'd say put your most common language at the top and then alphabetize them... but just alphabetizing them wouldn't make it less user friendly IMHO.

If you have enough the you'd need to scroll I would put your top 3 or 5 (or some appropriate number of) most common languages at the top and bold them in the list then alphabetize the rest of the options.

For a long list I would probably list common languages twice. That is, "English" would appear at the top of the list and at the point in the alphabetized list where you'd expect.

EDIT: I think you would still want to alphabetize them according so how they're listed... that is "Espanol" would appear in the E's, not in the S's as if it were "Spanish"

Users will be able to pick up on the fact that languages are listed according to their translated name.

EDIT2: Now that you've edited to show the languages you're interested in I can see how a sort routine would be a bit more challenging!

Matthew PK
Also, if you can determine the user's language selection from the operating system, that one should rise to the top, or top group.
Carl Manaster
@Carl: That's a great idea!Alternatively you could base it on the resident country.
Matthew PK
It sounds good, but as if you put Espanol with E, where do you put 中文?
Jedidja
@Jedidja: Very true, but you're limited by the scope of your UI... you naturally cannot alphabetize with latin chars if you permit extended charsets
Matthew PK
@Jedidja: The end.
KennyTM
@Jedidja: If you really need to alphabetize it, I suppose it would make the most sense to put 中文 under Z.
Chuck
I personally find moving a single entry to the top incredibly unhelpful. I know where to look for English, or United Kingdom - under E or U respectively. If some eager-to-please programmer has moved it somewhere more 'obvious', i waste time looking for it.
Tom Anderson
@Tom which is why it should appear at the top AND in its alphabetical place (if the list is long enough to warrant)
Matthew PK
A: 

You could alphabetize them based on their ISO 639 language code.

Teddy
ISO 639 is obsolete.If you want to do this, use the new ISO 639-2 from here:http://www.loc.gov/standards/iso639-2/php/code_list.php
Matthew PK
+3  A: 

The ISO has codes for languages (here's the Library of Congress description), which are offered in order by the code, by the English name, and by the French name.

It's tricky. I think as a user I would expect any list to be ordered based on how the items are represented in the list. So as much as possible, I would use alphabetical order based on the names you are actually displaying.

Now, you can't always do that, as many will use other alphabets. In those cases there may be a roman-alphabet way of transliterating the name (for example, the Pinyin system for Mandarin Chinese) and it could make sense to alphabetize based on that. However, romanization isn't a simple subject; there are at least a dozen ways for romanizing Arabic, for example.

JacobM
+3  A: 

This is a tough question without a single, easy answer. First of all, by default you should use the user's preferred language, as given to you by the operating system, if that is one of your available languages (for example, in Windows, you would use GetUserPreferredUILanguages, and find the first one on that list that you have a translation for).

If the user still needs to select a language (you would like them to be able to override their default language, or select another language if you don't support their preferred language), then you'll need to worry about how to sort the languages. If you have 5 or 10 languages, the order probably doesn't matter that much; you might go for sorting them in alphabetical order. For a longer list, I'd put your most common languages at the top, and perhaps the users preferred languages at the top as well, and then sort the rest in alphabetical order after that.

Of course, this brings up how to sort alphabetically when languages might be written in different scripts. For instance, how does Ελληνικά (Ellinika, Greek) compare to 日本語 (Nihongo, Japanese)? There are a few possible solutions. You could sort each script together, with, for instance, Roman based scripts coming first, followed by Cyrillic, Greek, Han, Hangul, and so on. Or you could sort non-Roman scripts by their English name, or by a Roman transliteration of their native name. Probably the first or third solution should be preferred; people may not know the English name for their language, but many languages have English transliterations that people may know about. The first solution (each script sorted separately) is how the Mac OS X languages selection works; the second (sorted by their Roman transliteration) appears to be how Wikipedia sorts languages.

I don't believe that there is a standard for this particular usage, though there is the Unicode Collation Algorithm which is probably the most common standard for sorting text in mixed scripts in a relatively language-neutral way.

Brian Campbell