Localization vs Internationalization

Martin Thoma
Sep 26, 2020 · 2 min read

Internationalization is the process of making your software easy to adapt to different languages or regions.

Internationalization is often abbreviated by i18n. In a website, i18n can mean to use Babel projects (e.g. flask-babel in Python, gettext in PHP, FormatJS in JavaScript, …)

Localization is the process of adapting your software to a different language or region.

Localization is often abbreviated by l10n. l10n includes translation, adjusting currencies ($, €, £, ¥, …), systems of measurement (metric vs imperial), adjusting time zones. The language change might make a lot of other changes necessary. For example, it can very well be that the layout does not work any longer. It might mean that you need to get more data about the user because there are other ways to address the user.

Localization is not defined by the language

You might be tempted to use the language as an identifier for the locale. That doesn’t work:

Localization is not defined by the country

This one is far closer, but there are many more detailed rules about time zones. For example, the US has four time zones and Russia has 11 time zones.

Also the language is not defined by the country. French is the official language of Quebec, but the rest of Canada speaks English.

See also

Plain and Simple

Explain concepts in just a few words