Don't mix language and location. I might be in Spain but I might want to chat in Finnish.
For language, yes, allow the user to set it. However, you can probably use the Accept-Language http header to get the right language for most users.
For language, yes, allow the user to set it. However, you can probably use the Accept-Language http header to get the right language for most users.
There is a discussion about this: http://www.w3.org/International/questions/qa-accept-lang-loc...
As long as the user can ultimately decide on their own, you can try a best guess for them. Just make it easy to switch and let the user know first thing.