Internationalization and localization are part of portability and consist of adapting a software system for use with different languages, taking into consideration cultural differences, and meeting other requirements for various locales.
As a software architect, you will need to know if there are internationalization/localization requirements, so that you may consider them in the design. Even if there are no requirements currently, if your organization has business goals for international business expansion, the software may eventually be used in different areas around the world. If that is the case, you will want to consider that fact in your initial design, as it is more difficult to provide this capability later.
Internationalization is designing software in such a way as to enable localization and support for different languages, cultures, and regions. Internationalization in this context is often abbreviated to i18n, where 18 is the number of letters between i and n in the word internationalization. Sometimes the word globalization is used instead of internationalization. When that is the case, it is sometimes abbreviated as g11n.
As part of internationalization, the software should be designed so that adapting it to different locales later will not require modifications to the code. For example, all translatable strings, such as captions, messages, tooltips, and other content, should be placed in resource files. The code can then reference those resource files when it needs that content. Later, while localizing the application, these strings can be translated for different locales without having to change any code.
Unicode should be used as the character set for applications that require internationalization, as it supports all of the characters from any written language worldwide. If a development team were to use different character sets for different languages, localizing an application would be much more difficult. Unicode will facilitate displaying characters from any language that needs to be supported, and because there is a unique encoding for each character, data can be sorted, searched, and manipulated in the same way.
Once an application is ready to be localized, the following are some things which need to be considered:
- Translating captions, messages, tooltips, and other content for another language
- Ensuring the user interface can accommodate words properly after they are translated (for example, spacing and the wrapping of words could be different)
- Variation in the spelling of words, even for countries which use the same language, such as aeroplane/airplane, capitalise/capitalize, and organisations/organizations
- Language and cultural differences may require content to be rewritten to ensure that nothing will be misunderstood or taken the wrong way
- Whether text is read from left to right or right to left
- Differences in telephone numbers
- Differences in weights and measures
- Different date/time formats, such as whether 6/1/2019 should be interpreted as June 1st or January 6th
- Time zone differences (UTC)
- Formatting numbers, such as decimal mark symbols, digit group separators, and digit groupings
- Different currencies, such as currency symbols and whether the currency symbol should appear before or after the monetary value
- Any legal requirements