There are numerous reasons why server-driven language negotiation should not be the only selection mechanism available to users. Users will likely, on occasion, wish to refer to some other language version than the one which their customary language preferences would indicate, and this may change on a page by page basis. For this and other reasons, it's recommended that pages that are available to readers in more than one language variant, should offer explicit links to the other languages. Note that the frequently seen use of national flags for this purpose is illogical, and can be a cause of pointless annoyance to one's readers, as an article by J.Korpela has pointed out. I would suggest that this is perverse for a number of reasons.
Readers spend most of their time on other people's sites.
You do them no benefit by wasting their time teaching them a mechanism that only works on your own site. You would be doing them much more of a favour, if you want to teach them anything, to teach them to find the language preferences selection that is built-in to their own browser already, so that they can take advantage of the WWW's standard method of language negotiation, not only on just one site. Readers who are concerned about privacy are likely to be even more reluctant to accept and send cookies than they are to send the standard language-preferences selection. Guesstimates of a reader's preferred language based upon the apparent calling IP address or DNS name are notoriously unreliable in a WWW context. It has already been recommended that the author should provide explicit links to other language variants, so the language negotiation feature will do no more than to make an initial selection of language, which the reader can then overrule.