Anyway while what others have answered is good, it doesn't get to the larger picture. I will give you what I think is the IDEAL answer.
Basically, this answer provides MULTIPLE clues (rather than just a single clue) for language selection.
First is the name of the language, (as per the answers above), as it provides a basic interface for any english literate person.
Second is the name of the language in it's own native script, for a basic native language literate person. e.g.
Third is a flag for the country. For languages spoken in Dialects and common countries one can use the Country of origin, or the country of speech. E.g. ENGLISH (should have UK Flag), ENGLISH UK, ENGLISH US (should have their respective countries flag). A visual clue bypassing the thinking part of the brain.
Below is a poor screenshot of such an example, from the website http://blog.myheritage.com/2009/06/small-changes-big-differences-new-header-and-footer/
Many applications I've seen have implemented this correctly, and I urge the rest to follow this.
Some other features required are quick filtering of displayed languages by keyboard, like what listary does for lists, to narrow down results. Like if searching specifically for English (Singapore).
Furthermore the placement of the language switcher matters a lot. It should be ideally located above the fold (i.e. on the first page itself) somewhere. The general practice is the top right corner, below any Profile info you might have. IT IS A MUST for first time visitors, it can be hidden for repeat visitors (i.e. the site is already in their preferred language) and accessible via the second location.
The second common location is at the bottom of the page, either centered or left aligned. Though I think it should always be available at first glance. The same applies for applications.
Ahhh this is one pet peeve of mine!!
For example see Chrome! (I know it's an application, but bear with me) It has the most awful UX for changing the language to english from an unknown language for the user. It requires an inordinate amount of clicking and utter confusion!!
- Menu icon
- Settings menu item (no icon!! to identify it clearly/easily when using an unknown language)
- Click on Show Advanced Settings text.
- Click on Language (absolutely no way to find it in an unknown language)
- Click Add
- Select your language
- Move it to the top of the screen.
- Click on the button on the right to make it the default chrome language. (Some languages cannot be done this way either, and can only be used for spelling! They should just separate out these dialogs, and not combine the spelling and Language selection dialog!, as the most common case is presumably language selection, and a very distant one is spelling checker selection).
- Restart chrome!
Some interesting links I found with contrary views and other useful resources.
http://flagsarenotlanguages.com/blog/best-practice-for-presenting-languages/
http://commons.wikimedia.org/wiki/Linguistic_flags
http://commons.wikimedia.org/wiki/Category:Flags_of_languages