Server-Driven Language Selection
Conneg for language versions is a neat-sounding idea, but in practice there are so many contradictory requirements, edge cases and exceptional circumstances as to make it worthless. And where it is employed there is frequently no painless way to get the actually desired language version.
Just Say No.
Make the different language versions easily, cleanly addressable and stick a bunch of flag icons on your page, then call it a day. Your users will thank you and you will have less code to write and debug.
The flags are debatable, but +1 to the rest.