Отличие интернационализации от локализации?
Не могу понять отличии интернационализации от локализации? Читаю термины и не доходит, дайте пожалуйста простые примеры и разъяснения, заранее спасибо.
Интернационализа́ция (англ. internationalization) — технологические приёмы разработки, упрощающие адаптацию продукта (такого как программное или аппаратное обеспечение) к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.
Локализа́ция програ́ммного обеспече́ния — процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой.
Ответы (3 шт):
Дочитали бы до конца wiki
Интернационализация — это адаптация продукта для потенциального использования практически в любом месте, в то время как локализация — это добавление специальных функций для использования в некотором определённом регионе. Интернационализация производится на начальных этапах разработки, в то время как локализация — для каждого целевого языка.
На самом деле если посмотреть применительно к производству то будет видеться разница.
Интернационализация производства и локализация производства
Интернационализация (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 и будет локализацией приложения на русский язык.
Разницу можно посмотреть на простом примере:
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));
}
}
Осталось вынести ресурсы из кода приложения и добавить проверку передаваемого параметра.