Modern programming platforms such as .Net, Java and Android all support internationalization, also known as i18N. This involves architecting the database schema so that it supports tables for multiple language strings. This way an application can handle multiple languages (i.e. be localized).
During the application coding process, developers must use variables in place of strings where text is output. Then the application uses a resource or lookup table to pull the correct language for presentation in the UI, a print job or to be saved as a file. This is a simple but sometimes overlooked part of development.
It happens for a variety of reasons:
1. Developers are often under tight deadlines to get a product to market (and generate revenue) and ignore best coding standards, architecture and long term product lifecycle.
2. Companies often fail to take international markets into consideration when designing initial applications, so coding the strings in English makes sense. But markets are increasingly global and local language is increasingly important in emerging markets.
3. English is generally accepted as the default language for computer applications.
Continue reading at Wired.com http://goo.gl/IszdZ