Muitas respostas, muitas informações corretas, mas minha resposta é um pouco outro ponto de vista.
Internacionalização - é quando o desenvolvedor não possui no código mensagens diretas / mensagens de erro / nomes de botões / legendas de etiquetas / etc em determinado idioma, mas possui uma chave que é passada para a função de tradução e a função de tradução de acordo com a localidade do usuário atual retornará o texto final em inglês / france / etc ... A
função de tradução funciona com armazenamento (db / files / associative array / etc).
Armazenamento contém chaves usadas em coode e valores, que são textos em determinado idioma que o aplicativo suporta.
Localização - é o processo de adicionar novos valores em um novo idioma (por exemplo, espanha), apropriado para as chaves armazenamento, sem envolver o desenvolvedor nesse processo.
Por exemplo, temos armazenamento:
key | english | italian |
------+------------+-------------------+
title | Welcome | Benvenuto |
agree | I agree | Sono d'accordo |
thank | Thank you | Grazie |
Internacionalização que está usando no código algo como em confirm(t(agree));
vez de confirm("I agree");
ou confirm("Sono d'accordo");
Localização - é adicionar nova localidade ao nosso armazenamento, como:
key | english | italian | spanish |
------+------------+-------------------+------------------+
title | Welcome | Benvenuto | Bienvenido |
agree | I agree | Sono d'accordo | Estoy de acuerdo |
thank | Thank you | Grazie | Gracias |
e aqui o desenvolvedor não precisa de código de atualização, a função de tradução carregará corretamente os textos apropriados.