Internationalization is a crucial step in adding new languages to your app. If you don’t internationalize your software, you can’t make it multilingual, simple as that.

Apps are normally created in the native language of the programming team. Translating software requires replacing hardcoded text with references pulled from a dictionary file for each different language.


What is internationalization?

Adding languages to your software means updating the code, so it can support different languages, character sets, and layouts.

This process is known as internationalization or i18n – the 18 stands for the number of letters between the first letter (i) and last letter (n).


It’s important to remember that internationalization and localization (l10n) are two different parts of the overall globalization process.

  • I18n ensures that your codebase has the capabilities to support content from different languages
  • l10n helps to make a product feel “local” to a target market

Read more about the difference between localization and internationalization here.


What happens in the internationalization process?

The bulk of the i18n process involves replacing static pieces of text with code that references a dictionary file.

When the app loads, the code checks which language to display, and pulls the text out of the relevant dictionary file.

Similarly, formatting rules for numbers and dates are stored in a centralized format for each language (eg. day/month/year for UK English vs. month/day/year for US English).

When the i18n process is complete, adding a new language is as simple as adding a new dictionary file. The code won’t need to change for every new language.


So it’s super easy, right?

Well, yes and no.

For the most part, extracting text to a dictionary file is relatively straightforward.

However, there are a number of pitfalls that can trip up developers who don’t have a solid grasp of linguistics.

For example, it’s quite common to see text like this in an application :

“Hello, ${name} you’re a ${profession}”

When the text is displayed, ${name} is replaced with the current user name, and ${profession} is replaced with the current user’s profession. This is called variable interpolation.

Problems can occur – especially when there are multiple interpolations – because different languages handle things like gender, pluralization, and grammatical cases differently based on a previous variable.

When you’re internationalizing your application, you have to be mindful of these scenarios or risk constructing sentences in foreign languages that don’t sound natural at best, and at worst can be utterly incomprehensible.


The opportunity created by internationalization

Not only is internationalization a mandatory step in the globalization process, but it helps create an opportunity.

It opens up the possibility for your application to work just as well in one language, as in one hundred languages, without necessitating any expensive involvement from your development team.