Localization vs Internationalization

Martin Thoma
Plain and Simple
Published in
2 min readSep 26, 2020

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:

  • English: The UK has calendars that start on Monday, but the USA have calendars starting on Sunday. The UK has Pounds, the US has Dollars.
  • German: Switzerland has the Swiss franc, Germany has the Euro.

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

--

--

Martin Thoma
Plain and Simple

I’m a Software Engineer with over 10 years of Python experience (Backend/ML/AI). Support me via https://martinthoma.medium.com/membership