I hate internationalization, Take 2
Wednesday, 12. December 2007, 14:55:40
But, let's be constructive. Let's clear some things up.
First about some semantic candy. Let's start with a narrowing down of the environment - we're talking about web systems here - community services, blogs, shops, corporate websites, and various other etcetera. In this scope - I'll call providing your service in a variety of languages Internationalization. And I'll call providing locality based information or services Localization.
Let's cook up some examples. In the scope of Internationalization - it's what we'd be doing with my.opera if the interfaces were to be translated into other languages. It's what Google does with their search, mail and various other services. In the scope of Localisation - it's what IKEA and ASUS do on their web-sites. you select your location and you get information about stores and products sold in the specific country.
Those however are not the same thing. Assuming that localization equals internationalization puts people like me in a weird position. To see where the IKEA stores are located in Oslo, what do they sell there and for how much, I need to select Norway and take a look at the corresponding version. However - it's all in Norwegian, which I have to admit - I've extremely limited skills in. So when I need details, I track the same product on a localized site for another country and read them there, in a language that I happen to understand. The worst case are definitely web systems that ask you to select 'location', when the only thing they really mean there is 'language'. The country selection in them does not change the data in the website - it just selects a different interface language. So when I click Norway, where I am currently located, they give me Norwegian. Nice, that's very cool for the Norwegian people. But not for me. And I'm sure that "select language" would do the same great job. I'm sure that people living in Norway are well aware of which language they're speaking.
I cannot stress this enough. Where I am, in this day and age, does not imply what languages I am capable of handling, in any way. Locale-based internationalization, whether it's IP-based, or Country-based drives me nuts. It's wrong for me - I move a lot. I take planes, I go to places, I change countries more often than I change hairstyles.
Furthermore - localization is not necessarily bound in terms of language in any form. it might be local services on neighbourhood/city/region/country/continent basis. How much do you want to bind your service to a specific group of people? In what way do you want to scale? How do you know that in 3 years from now you won't want to scale your services worldwide? You might be just that good. Let us honestly believe that you are. So in that case, how do you provide services in a way that does not stab your users in the back?
If you don't know - go the easy way. Do it in English. The web is a mess, where everyone solves their communication problems with using (even more) crippled English, Internet-slang and 1337speak. It works. Start from there. Not many things can go wrong. But - make sure you're running entirely in UTF8. You won't loose a byte, you won't notice a difference, hell - you'll make your life so much easier. Especially if you grow later on. And if you're not doing a site in English - it's even more important. You don't want your own locale to be getting gibberish on your page, due to some stupid fuck-ups your intern managed to do last summer. No wait, I'm being unfair. There's a good chance you fucked it up and then some poor lad or lass had to tear their hair off just for looking at what you've done.
If you're only local - it's apparent that this is not going to be the most brilliant idea. So do both - give a local version and an English fallback. People will appreciate it, including yourselves, sooner or later. But don't make English your orphan-page. Don't let it be a set of static pages that are not updated often enough, or contain 2 paragraphs of text, instead of the whole site. We don't like orphan pages. If you can't keep up with it - scrap it. Do not make-pretend. it doesn't give you credit. Be honest and be local. Just consider your locale's immigration policies and numbers though.
Next - scrap the idea of binding localization and internationalization in any form. You've a service that you provide to people from different places of the world. When you give them language selection - make it global. Unify your systems. Not only you give me the chance of reading the page of services you provide in Germany, in Russian, but you save on maintenance development and other annoyances, when you decide to scale.
Second - don't read my IP. It means nothing. Let me repeat - it means nothing. Where I AM has nothing to do with what I want and what i can process. It doesn't imply nationality, language abilities, interest in local services, or even where I am. I might be jumping firewalls through a proxy. I might be using Opera mini, where the request you get looks like a request sent from Norway, even when I'm in Peru. I might be on an Airport, wasting 2 hours between changing flights. I might be using TOR or browsing through anonymizers, because of various reasons. When you draw assumptions out of that information you're making them flawed. Statistically speaking - yes, the majority of the requests might be correctly interpreted. Might. Even statistically speaking, your error margin is continuously increasing. At some point it will go beyond a threshold that's good for you. It's just a question of when this approach will not be beneficial enough for you, not if.
When you automate - do not assume. You won't win anything. If you've the computing power to provide me a couple of pages and maintain your service, then you've the computing power to roll a couple of simple lines of code to give me the content the way I want it. Read what I'm telling you. If my accepted languages are English and Bulgarian, try to provide me with the content in the highest priority language I've listed. It's easy. Also - make abso-fucking-lutely sure you're giving me a clear and apparent choice to pick something else. Do not hide your language support like Skype.com does. Do not hide it - parade it. You've taken care to support a bajillion languages - for the love of the god, man - you've done a good job! Do not hide the results from me! If I am not giving you a clear choice of what I want - roll some more logic to find out. Let me select. Hell - use the darned IP detection then, if you're really that desperate, but do give me my choices in an obvious enough place.
When you expand and localize specific services and products - don't assume only people from the selected place will want them. Why limit what clients you will have? You already have 2+ languages you need to provide the same consistent service in - internationalize! Make them available everywhere. I want to buy an IKEA desk in Greece, from an Norsk interface. Provide it to me - you already have it all anyway.
Realize that if you're already doing all that, you don't have to be doing it wrong. It's even easier to get things right, when it boils down to your development and maintenance teams. You might even be saving yourself a lot of trouble, while at the same time winning big on usability for your consumers.









How to use Quote function: