I have similar experiences living in a country where the dominant language is not my own. I hate the assumption that location should determine language preference.
I've worked with several really smart programmers from the US during my career. However, I've noticed that their geographical knowledge of anything outside the US is extremely poor (generalisation I know).
I assume this is due to the education system. Could this be the reason why large global players like Facebook and Google have such a poor acceptance and understanding concerning language, location and locales? Simply because many of the programmers are American?
I often give the example that there are vastly more Catalan speakers in the world than those that speak Norwegian. However Catalan speakers are treated like second class citizens because most of them live in Spain, and programmers assume that Spain equals Spanish. And we are talking millions of people more. It isn't a small number.
I'm often reminded of the urban tale of the man who approached a well known seller of washing-up liquid. He promised them a 25% increase in sales and he's receive 5% of the 25%. They agreed since they had nothing to lose and he told them to make the hole in the squeezy bottle 25% bigger. The people still squeezed the bottle for the same amount of time and the genius went home happy.
So I say to Facebook and Google, "use the language of the user, as defined in their browser language s settings primarily, but offer the user a choice to change it. I'd like 25% of the increased sales" .
The user's location should never be used unless you have legal obligations that are tied to geography. In which case, don't show an ad, since they'll not only be ineffective, but they make your company appear incompetent to the end user as well. Especially when I've registered to use your service and selected a preferred language!