For years, I have been trying to wrap my head around the purpose of using GeoIP to decide web visitors’ preferred languages. I failed to see any benefits from using GeoIP other than current visitor’s location, in fact, I’d wage that GeoIP has bigger chance to get user’s desired language wrong.

It just doesn’t make any senses, don’t web developers know of Accept-Language?

The earliest entry I could find is HTTP Request fields in 1992-1994, and HTTP 1.0 and 1.1. It has been around for decades, why bother using GeoIP? Whose primarily main purpose is to decide the geographical location, not the language associated to the region.

Why GeoIP, not simply Accept-Language? That’s the question I can’t find the answer. Perhaps, these are answers?

  • Many users never change the defaults for Accept-Language. They are set when the user agent is installed. […]
  • A user agent may send a request that specifies only a language and not a region, […]
  • People borrow machines from friends, they rent them from internet cafes. […]

Well, no, those makes no sense, either. For countering the points above:

  • Then why the user downloads the web browser installer in a language he or she doesn’t speak in the first place?
  • In these days, how many browsers don’t have those specific language-region options?
  • You know what you are borrowing, change the setting then.

These definitely not the reasons for using GeoIP. If stating user’s ignorance to the language setting of browser is fairly weak point, and only showing web developers trying to fix an issue shouldn’t be fixed on their end, they are fixing issues ain’t broken.

Here, I am actually talking about your own computer or device and the client is web browsers.

Imagine that you are traveling to a country where the language you don’t speak, whether for work or for pleasure, it doesn’t matter. Let’s say you need to log into Gmail and since you have different IP address in the foreign land, Google would automatically not accept previous sign-in, you will have to be re-signed in; and also presume Google would not use your language setting of your account since you are not yet signed in.

So, an IP address assigned to foreign land, where you are and speaks the language you don’t, if Google uses GeoIP, which it does, then you will see a sign-in page in a language you don’t speak, when your browser has already sent out the Accept-Language you desire, which almost all websites turn a blind eye to these days.

Does that make any sense using GeoIP? Doesn’t it get the language wrong?

The only kind of acceptable scenario is that you are a British traveling to US. In this case, you still get the English, just u might be lost in the words, occasionally, such as coriander becoming cilantro, you say /təˈmɑːtoʊ/ and they say /təˈmeɪtoʊ/. It’s no biggie, right? However, it’s like a false (not-quite) positive case, so it still makes no sense.

Even with Mobile IP, which I don’t believe it has anything to do with language in its design. The browser has the right language already, why not just rely on request header?

If the argument is for local people, then I don’t know which scenario is worse for wasting resources just to find out language settings. Thousands of websites use GeoIP, millions or billions lookups, just to find out the visitors’ languages, when the answer is already there at website’s doorsteps, which conforms to country code that you can directly use it to get the translation table for your website.

Even with GeoIP, in a country that has more than one official languages, you get a very good chance to get the user’s preferred language wrong. You don’t expect the citizens stay in the same regions the entire lifetime, do you? GeoIP is an awful idea for language and can be wrong easily. It’s the 21st century — not the twelfth century people hardly getting past village gates1 — people travel a lot, deciding the preferred language from associated region by user’s current location can’t be the good solution, and hardly reliable.

So, you see why I just can’t see to understand why every big website using GeoIP to determine unsigned-in user’s language. Please enlighten me, if I have missed or overlooked something, otherwise, allow me to reiterate once more:

GeoIP just doesn’t make senses.

[1]Alright, I don’t actually know if how far did people from the 12th century travel, but you get the idea.