Since I'm an expat living in a country that has four official languages (all of them are still foreign to me) I feel entitled to rant about the internationalization and localization of software. Let's start:
1. Making it hard for users to change the language
Most of the websites and applications make educated guesses for which language they should display. This guesses are not always right. For example I'm using a company laptop where I cannot change language and Chrome reports my default language wrong, or I'm travelling and my IP address has nothing to do with the languages I know. Some software developers don't take this cases in considerations and once the language was guessed it's very hard for the user to change it. Usually because the configuration is hidden or missing completely.
My suggestion is to try to guess the language, but let the user change it easily and wrong guesses will be less annoying.
This can be done by putting language selectors in places that are visible and easy to reach. You should not have to scroll to find them and god forbid to require navigation through a menu structure in a language you're not familiar with. Some prefer to show a message when the "guess" happen to inform you about the automatic choice and also provide a short-cut to change it in case the guess was wrong. A message like "You were redirects to Language Name. You can change you language here in case you prefer something else". This will let you get away with hidden language controls, but will still presents a problem if the user has no idea about the language used for the message. I will never understand this message in Chinese for example, but if it will be one of the other languages accepted in my country/region I can probably guess pretty easy.
Bonus middle finger points go to websites like GoPro's user manual, that force redirect you based on IP. So even if you change the language/region, you'll be redirected back in a matter of seconds.
2. Assuming country dictates language
This wrong on so many levels. Sometimes this assumption ignores other official languages a country might have. In a country that has more than one language, the trend is to ignore languages less popular.
Also, if you are a tourist or expatriate, you might not know any of the local languages. I don't know how to read the website of the public transport institutions in their local language. If you care about tourists or imigrants, every public institution should have an "English" or any other international language alternative. If you provide a service that clients can use on the road, it's annoying to change the language when they travel to different countries.
3. Coupling language with regional settings
People tend to set their devices in English language because that's de-facto IT language. Because applications (desktop/mobile) have access to this setting, they rely on it to make assumption about your localisation preferences (sometimes just to avoid the effort of adding extra configuration for the application itself).
Most of the time, this includes only language, but when it doesn't stop there and you start to see issues with things like calendars, units and currency. Calendar problem is already well know, and most calendars let you chose the start of the week day (Monday or Sunday). There others implications are hard to change or fix. For example if you want to use English with the metric system one has to chose English Canada or Australia, but that's something you can not rely on. For example a lot of Android phones do not offer this choices to you (you might have only US/UK when it comes to English flavours). Currency is the same. You can not have English with Euro as the preferred currency.
4. Limiting access to regional stores
I faced this issue with various service providers. Sometimes it's because I want to use apps like banking or mobile service providers from different countries (home and adoptive country). Most of the app stores force you to chose a single country/region and you can not use banking apps from two countries, despite the fact that you might have a legitimate bank accounts in both countries.
The same goes for service providers. I can not use my cost control app for my SIM registered in my home country because my store is set to my residency country. Phones are dual SIM now days to accommodate for people like me or who travel a lot, app store not yet. Software developers should decide where the app can be distributed and I can't understand why they don't chose globally.
The implications are worse for service apps: taxis, parking payments and ordering apps. I can't install the majority of taxi apps when I visit my home country. Parking payment apps limited to countries they operate are also unavailable for tourist or people who changed residency.
In a world in people travel so much and changing your country of residence is pretty common, this feels outdated.