Localization and internationalization, what's the difference?

I was going to ask a question about preparing a desktop application to support multiple languages on the UI.

In my search for existing questions on the topic I was thinking the word "International", so I selected the Internationalization tag and read through some matching questions.

Eventually I realized I should probably be looking under questions tagged Localization instead. However it appears I'm not alone in getting these two terms mixed up.

So, what are they key differences between Localization and Internationalization?

Also, is a clear distinction between them really that important?


Internationalization (i18n)
the process of changing your software so that it isn't hardwired to one language/locale/culture.
Localization (l10n)
the process of adding the appropriate resources to your software so that a particular language/locale is supported. It's bigger in scope than just this Wikipedia entry, but it's a good start.


The value of distinguishing between them is that (theoretically) once your program goes through the i18n process, you can then iterate many l10n processes as you need them; also, it's nice to be precise with language.


According to Apple:

Internationalization is the process of designing and building an application to facilitate localization. Localization, in turn, is the cultural and linguistic adaptation of an internationalized application to two or more culturally-distinct markets.