I was meeting with the product lead for the message boards platform in the Yahoo! Sunnyvale headquarters. As part of my duties as lead product manager for Yahoo! North Latin America, I was trying to make the Spanish version of this application available to the properties I oversaw.
“This is the first time we built the application using Babel, so it’s taking longer than usual”, he said.
Babel was the translation tool Yahoo! used at the time for internationalization of their platforms (my good friend Mauricio, who still works there, tells me they now have a much better application called ‘Yala’) and this was indeed a great step towards a global approach to products. The year was 2004, and Yahoo! had put as part of their global initiatives to make all their platforms i18n ready.
Internationalization and localization is an area that a lot of startups see as an afterthought, preferring to tackle it at a later phase. The problem is that internationalization is a time consuming task, and it becomes even harder if you try to reverse engineer it on your existing application. I highly recommend doing it from the get go, even if the only language you’ll support initially is English.
Take, for example, Get Satisfaction. In this very interesting thread, users have been discussing, for the past year, how to make Get Satisfaction be multilingual. Amazingly, reps from the company cite “technical and scheduling reasons” and “figuring out the business” as the obstacles to making it happen. Pardon my french, but that’s a load of bull. Many users have offered to help them do the translation (including myself) but they insist they don’t have the time. Guess who’s losing a business or even setting the table for a competitor to just walk in?
Why is internationalization important?
According to Internet World Stats there are roughly 248 Million Internet users in the US, but that only accounts to 17% of the estimated 1.4 Billion Internet users worldwide. Latin America has roughly 140 Million Internet users. China alone has 253 Million users.
In terms of monetization and traffic it’s immediately apparent why it makes sense to release your site with a global focus. You never know which country might become your biggest fan. It also allows you to balance off any economic downturns one country might have and in many cases give you access to regional capital that might be otherwise out of reach.
The components of internationalization
There are many aspects to making your site international.
The most apparent one is language, but it’s not the only one. There are other considerations as character encoding (i.e., does the language have accents or other special character, does it read left-to-right or right-to-left), local time and date format (dd-mm-yyyy or mm-dd-yyyy).
Application design with multiple languages
The best way to make sure your site can be localized is to follow a Model-View-Controller approach, i.e., to have your presentation completely separated from your controlling code.
In this approach you would have some sort of templating system for the presentation of data. Make sure these templates have variables instead of the actual language strings. So for example, instead of writing “Welcome back, $user” on your template, you would have “$welcome_string”. This welcome string will be generated by the controller.
On your controller side you would have a dynamic inclusion of a language file, which tipically is stored in either a database or a static file with an array of values. Which language file is loaded is based on your language preference.
The language preference can be done in two ways: one is via a cookie and the other is via the URI. If you want search engines to parse your site in the various languages, it is better to use the URI approach. In this case you would have either a subdomain (i.e. http://en.mysite.com for English, http://es.mysite.com for Spanish) or have mod_rewrite parse it from the directory tree (i.e. http://mysite.com/es/login for the Spanish login page).
The human component
It’s always very important to use people from the region you want to target to oversee your localization. Using mechanich tools or software to do the translations just doesn’t cut it. That’s why it makes total sense to do why other community sites have done: leveraging their community.
A good example of this is Facebook. They built a community-driven system where users would translate the strings used across the site, and then another group of users would vote on the best translations, and finally launched it. Shortly after they did this, Facebook’s international traffic exploded, while their US traffic was remaining pretty level. I know from my friends and family in Latin America that around the time the Spanish translations came up, they flocked from Hi5 to Facebook. According to this graph from Oxyweb, Facebook continues to win countries, as more and more localized versions are released.
One popular PHP framework that supports languages natively is CodeIgniter. They offer a class to manage language strings as well as other localization features.
Other stand alone applications for i18n are Yahoo’s r3 API and the 99translations service, that allows you to upload your text files and they have translators translate them for you.
Whatever tool, service or approach you use, make sure you have a global focus for your startup or site. The World is waiting to use it!
{ 2 comments }

