Отличие интернационализации от локализации?

Не могу понять отличии интернационализации от локализации? Читаю термины и не доходит, дайте пожалуйста простые примеры и разъяснения, заранее спасибо.

Интернационализа́ция (англ. internationalization) — технологические приёмы разработки, упрощающие адаптацию продукта (такого как программное или аппаратное обеспечение) к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.

Локализа́ция програ́ммного обеспече́ния — процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой.


Ответы (3 шт):

Автор решения: Aziz Umarov

Дочитали бы до конца wiki

Интернационализация — это адаптация продукта для потенциального использования практически в любом месте, в то время как локализация — это добавление специальных функций для использования в некотором определённом регионе. Интернационализация производится на начальных этапах разработки, в то время как локализация — для каждого целевого языка.

На самом деле если посмотреть применительно к производству то будет видеться разница.

Интернационализация производства и локализация производства

→ Ссылка
Автор решения: Barmaley Red Star

Интернационализация (i18n) - по сути это создание технологии, а локализация - это собственно сам процесс использования технологии.

Пример

В Android i18n осуществляется ресурсами распределенными по разным папкам в наименованиями папок: values-[locale] или values-[locale]-r[region], например:

values-ru     //русский
values-ru-rRU //русский в России
values-ru-rUA //русский с украинским акцентом
values-ru-rKZ //русский с казахской вариацией

Понятно, что это работает не просто так, за всем этим стоит некое API, разработанное Google, собственно создание этого API и называется интернационализацией.

Теперь, локализация - это написание ресурсов/кода подчиняющихся правилам интернационализации. В случае Android создание файла (и не только его разумеется) res/values-ru/strings.xml и будет локализацией приложения на русский язык.

→ Ссылка
Автор решения: Sergey Gavrilenko

Разницу можно посмотреть на простом примере:

public class Example {
    public static void main(String[] args) {
        // Основное действие приложения
        System.out.println("Hello, World!");
    }
}

Что бы иметь возможность выводить приветсвие на разных языках, будем передавать приложению требуемый язык в качестве первого параметра, то есть args[0]. Первым делом необходимо выполнить интернационализацию приложения, то есть подготовить его код для возможности изменения языка приветствия:

public class Example {
    public static void main(String[] args) throws InterruptedException {
        // Добавлен механизм, позволяющий позже добавить новые ресурсы
        String lang = args.length > 0 ? args[0] : "EN";
        HashMap<String, String> greetings = new HashMap<>();
        greetings.put("EN", "Hello, World!");
        // Основное действие приложения
        System.out.println(greetings.get(lang));
    }
}

Теперь наше приложение интернационализовано и готово к локализации, то есть к добавлению новых ресурсов. Выполним локализацию на русский и украинский языки:

public class Example {
    public static void main(String[] args) throws InterruptedException {
        // Добавлен механизм, позволяющий позже добавить новые ресурсы
        String lang = args.length > 0 ? args[0] : "EN";
        HashMap<String, String> greetings = new HashMap<>();
        greetings.put("EN", "Hello, World!");
        // Добавляем новые ресурсы локализации
        greetings.put("RU", "Привет, Мир!");
        greetings.put("UA", "Привіт, світ!");
        // Основное действие приложения
        System.out.println(greetings.get(lang));
    }
}

Осталось вынести ресурсы из кода приложения и добавить проверку передаваемого параметра.

→ Ссылка