Localization : You’re doing it wrong.

I can’t really help but notice how many sites and services incorrectly implement localization. If you’re a developer. I urge you to please pay attention to this, especially if you work for Google!

Yes that is right even the big players in the game, such as Google haven’t yet learnt how to localize correctly.

Here is the typical incorrect approach:

Localization - New PageThis is the typical approach you see. Many web sites incorrectly implement this, but even services such as the Google Play store employ this method, and it is incorrect, let’s examine a bit further.

Consider Bob,  an American who travels a lot mainly through Europe. Bob primarily speaks English. Actually he only speaks english but frequents many websites that target an international audience, he’s also a Google fanboy, and has an Android phone and tablet. Bob takes a train from Paris, France and ends up in Prague, Czech Republic. The train has free public wifi, and Bob is pretty much sorted, except he notices that as he travels from country to country, the web sites he’s frequenting change language. Some sites deploy a cookie to keep track, others don’t bother. Bob notices that sub menus in his Google play store app on Android too appear in languages he simply cannot understand. He double checks his user settings, and sure enough he’s set them to English. There is nothing that Bob can do to fix this his side – the reason? Poorly implemented localization! Bob decides to invest $50 dollars a month in a VPN solution, so that to these sites and services it appears he is browsing from his home in the US.

What’s wrong with this approach?

  • Assumes the user is a native speaker of the local language in the country of request.
  • Assumes only 1 language per country
  • Bob can’t override his settings with a language preference

Localization done correctly

Localizationcorrect - New PageJust a few extra steps and not only Bob but everyone on the planet is content.

Why this works?

In the above correct implementation Bob continues his travels throughout Europe. Because Bob has already registered for Google applications and services and set his language preference to English – ALL offerings now pull his language preference correctly from his user profile.

When Bob visits a local news site in Germany, he doesn’t want to register. Instead on his first visit he is greeted with an overlay that asks him to select his language. He does and continues across to Czech Republic. On his return visit, Bob decides to check the news site again. With the cookie in place he views the site in English.

Bob decides to register. During registration the language preference is defaulted to the value set in the cookie. The site also has an Android app. Bob downloads it, and has to login. After login, Bob notices that the application is in his preferred language without any additional hassle.

Localization is semi useless if it’s not done correctly!

Final tips

  •  DON’T implement based on lazy IP check.
  • DO use an IP check to get most frequently used languages in that country
  • DO show a user a visible way to set language prior to showing them content on the site / service
  • DO use system settings to pull language preferences where possible – useful during app development
  • DO use cookies to allow the user to set a language preference without going through a registration process
  • DO cater for OUTSIDE THE BOX use cases, such as Spanish speakers in Korea, or English speakers in Europe!
  • DO offer a fallback to English!

My adventures in Linux: week 1

Up and running

I am now nearly fully up and running on Mint 15 Olivia. I still can’t get over how gorgeous the fonts look, and the screen layout crisp and uncluttered. 

Apps I’ve gone with

The “vitals I had in Windows” are for the most part not part of my journey anymore. Chrome, Firefox and Skype I’m still using, other apps I’ve found replacements for. 


Any chess players? FICS? On Windows I used Babas chess. Swopped this out for Pychess : http://pychess.org/ . I’ts actually better.  

I’m really liking Battle for Wesnoth : http://www.wesnoth.org/. It’s a fun turn based game, that starts off easy, but as things progress gets difficult to beat the AI. Long single player campaigns. Many claim it’s their favorite open source game. Well so far I’m loving it. 


On Windows I used WinRar, on Linux I can’t tell you what I’m using, everything just works. This is most likely a Mint thing. So far I’ve had no reason to install any archiving / extraction tools. 


I had no expectation of fully replacing Visual Studio and C# with Project Mono. I still think that later on down the road I will find a use for Mono, but as they say “When in Rome…” 

On Linux I’ve opted for Qt (http://qt.digia.com/) , I know it’s possible to use QML for interface design, but  I decided to use HTML5 instead. Qt is pretty amazing. The HTML5 rendering is handled by webkit and you hookup functions to expose strongly typed “server side” code. It is possible to use Qt with languages other than C++, but I’m really new to the world of Linux and wanted the easiest approach. The Qt creator IDE is designed exclusively for C++ (This might change), but coming from a C# background C++ is a relatively easy language to learn. Since knowing C++ will come in handy on Linux, it’s the language I’ve gone for. 

As for HTML editing, Sublime seems to be where the fun is at: http://www.sublimetext.com/, so far love the color schemes. 

Things I’m noticing

  • Applications start faster on Linux, I guess there is far less bloat in Window creation? This could be a DE specific thing. I have no idea. 
  • Created my first permanent alias, no jokes it’s to kill Skype. Skype on Linux is a bit better than the Windows 8 client, but it still hangs from time to time and requires a hard kill. 
  • Google play music has a native Linux client – frigging sweet, but it needs work. It’s slightly worse than the Windows one, but it does the job. 
  • System is using a lot less Swop space, where applicable “none”, so for this reason much less HDD IO. SSD’s WILL last longer if you use Linux, but for me the notebook I have comes with a dog slow HDD, any less IO vastly improves the system performance. 
  • Had one or 2 strange hangs. One where all my windows minimized and couldn’t get them maximised. Can’t reproduce it and it only happened once. 
  • Everything feels more responsive. 

If you’re using Windows, the distribution of Linux I am using can be found here: http://www.linuxmint.com/