I have told the story here before, but I built a neat little system to parse Accept-Language weighing the users priorities and using the closest thing we have on offer to the users preferences. As an example, we have a Brazilian Portuguese translation but not Portugal Portuguese, so we would offer the prior to users requesting the latter for instance unless they had a lower priority but more exact match.
From my technical standpoint it worked really well and the code was very slick. It was a lot of fun to build.
From a user standpoint most of our users really just wanted English regardless of their Accept-Language header. They had the option to change it in the footer but this apparently wasn't obvious enough.
We just ask now, and our users are happier.