Beaucoup de réponses, beaucoup d'informations correctes, mais ma réponse est un peu un autre point de vue.
Internationalisation - c'est lorsque le développeur n'a pas dans le code de messages directs/messages d'erreur/noms de boutons/légendes d'étiquettes/etc dans une certaine langue mais qu'il a une clé qui est transmis à la fonction de traduction, et la fonction de traduction en fonction de la locale de l'utilisateur renverra le texte final en anglais/français/etc...
La fonction de traduction fonctionne avec le stockage (db/fichiers/réseaux associatifs/etc).
Le stockage contient clés qui est utilisé en code, et les valeurs, qui sont des textes dans un certain langage que l'application supporte.
Localisation - il s'agit d'un processus d'ajout de nouvelles valeurs dans une nouvelle langue (par exemple l'espagnol) appropriée pour clés dans le stockage sans impliquer le développeur dans ce processus.
Par exemple, nous avons le stockage :
key | english | italian |
------+------------+-------------------+
title | Welcome | Benvenuto |
agree | I agree | Sono d'accordo |
thank | Thank you | Grazie |
L'internationalisation utilise dans le code quelque chose comme confirm(t(agree));
au lieu de confirm("I agree");
ou confirm("Sono d'accordo");
Localisation - il s'agit d'ajouter une nouvelle locale à notre stockage, comme :
key | english | italian | spanish |
------+------------+-------------------+------------------+
title | Welcome | Benvenuto | Bienvenido |
agree | I agree | Sono d'accordo | Estoy de acuerdo |
thank | Thank you | Grazie | Gracias |
et ici le développeur n'a pas besoin de mettre à jour le code, la fonction de traduction portera correctement les textes appropriés.