Localization vs Internationalization
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
- W3C: Localization vs. Internationalization
- Wikipedia: Internationalization and localization
- Ben Hamill: Falsehoods Programmers Believe About Language
- Skylar MacDonald: Falsehoods Programmers Believe About Me