Internationalization – often written as 'i18n' (18 being the number of letters between 'i' and 'n' in the English word) – is the design and development of an application using practices that simplify its (later) localization for different countries, languages and cultures.
Internationalization typically involves (among other practices):
- Support for Unicode, relevant legacy character encodings, and different text directions
- Using predefined localization data and formats from existing libraries, such as options for date and time, calendars, numbers, names and addresses, list sorting, etc.
- Keeping code distinct from UI string values, and ensuring that user-localizable elements can easily be loaded (based on identifying user language or location) or selected
- Verification through pseudotranslation or by using machine translation to prepopulate strings to test a UI or function before real translations are available
- Building translation readiness into the software development process
- Validation that UIs will display special characters
- Validation that the UX design will support 30% expansion of text