Багато відповідей, багато правильної інформації, але моя відповідь трохи інша точка зору.
Інтернаціоналізація - це тоді, коли розробник не має в коді прямих повідомлень / повідомлень про помилки / імена кнопок / підписів / тощо на певній мові, але має ключ, який передається функції перекладу, а функція перекладу відповідно до мови поточного користувача поверне остаточний текст англійською / францією / тощо ...
Функція перекладу працює зі зберіганням (db / файли / асоціативний масив / тощо).
Зберігання містить ключі, які використовуються в коде, та значення, тобто тексти певною мовою, яку підтримує програма.
Локалізація - це процес додавання нових значень новою мовою (наприклад, Іспанія), що відповідає клавішам у сховище, не залучаючи розробника до цього процесу.
Наприклад, у нас є сховище:
key | english | italian |
------+------------+-------------------+
title | Welcome | Benvenuto |
agree | I agree | Sono d'accordo |
thank | Thank you | Grazie |
Інтернаціоналізація, яку він використовує в коді щось на зразок confirm(t(agree));
замість confirm("I agree");
або confirm("Sono d'accordo");
Локалізація - це додавання нової локалі до нашого сховища, наприклад:
key | english | italian | spanish |
------+------------+-------------------+------------------+
title | Welcome | Benvenuto | Bienvenido |
agree | I agree | Sono d'accordo | Estoy de acuerdo |
thank | Thank you | Grazie | Gracias |
і тут розробнику не потрібен код оновлення, функція перекладу буде правильно переносити відповідні тексти.