If somebody is telling you Internationalisation is free (i.e. implicit in the application) then be sure that you are talking to a programmer and not an architect or a business analyst. Most people think that by using UTF-8 for the database, using Resource Bundles for the application, you are done with Internationalisation. Technically, yes, it helps in achieving globalising the application but is that all you need?
Lets take an example, say eCommerce. An eCommerce application is required to be internationalised because the retailer wants to go to launch to other countries. So, one should step in the business person shoes and look at what does it take to go to another country. Few things that come to my mind are:
- Regulations of the country – What are the laws of the land that i need to worry about in my business and hence my application. For e.g.: UK is very strict on PCI/DSS compliance. So there is a clear impact on my application on PCI compliance etc. Switzerland does not want its customer data to leave is country, This clearly impacts the hosting decisions.
- User Experience – How would my end user experience be. Can i generalise to the most prominent US/UK standards or should it be localised. For e.g.: Uk is very strict in Accessibility, while germany is not so much. So, what level should i address. Taking it bit extreme, a South Korean customer would like to view the products slightly different from the way a UK customer would like to. As simple as address validation and standardisation varies from country to country.
- Business Logic Variance – What is country specifics vs what is region vs What is global. How do i handle my product pricing. Will it be standard across countries with exchange rate being applied or will it be locally determined. What orders will be fulfilled locally, what orders will come from regional hub? How would Order fulfilment happen.
- Operations – How do i handle my customer service desk? Should i place them locally or should they be regional with access to country specific data.
- Hosting options – Given the above, where should i host it? What are my economies of scale? While, being in business persons shoes,one can understand the problem statement or the context. Now, how do we solutionize this. We should ensure atleast the following:
- Identify applications/services that need to be localised, regionalised and globalised. For e.g.: A Content Management application can be treated as Global application/service while a Pricing and Promotions engine can be treated as regional/local, tax calculation need to be local. Search Engine need to be perhaps localised as you need to handle Stop words, Synonyms etc locally. This will then influence the hosting option, software licensing, application architecture etc.
- Put Sufficient focus on Data Modelling to support country specific extensions – E.g: Take the case of Order fulfilment that need to happen in each country. The order fulfilment need to accommodate the country specific fulfilment needs. So, keep your data model extensible to hold country specific attributes and functions
- Identify Plug and play business logic – Design your application such that country specific variations in business logic can be easily plugged in. For e.g.: Tax calculation, Price Calculation and even Address verification and standardisation can be plugged in.
- Define Access control – Ensure that country specific data is seen and operated on only by country specific users. This will be very critical, especially while doing Reporting.
- Last but not the least, Use Resource Bundles for all User interface labels and UTF- 8 for the database. Most often that not, the user interfaces ends up being very different across countries. It could be a change in layout, look and feel, content being displayed, etc. You have to take a call based on the country that you will be dealing with.
In a nut shell, Interrnationalis(z)ation is a vast topic in itself and cannot be addressed just by ensuring the database is UTF-8 and by handling some locale specific translations. You need to be in an Business persons shoes, look top-down from business process perspective and then make decisions on systems accordingly.