Локализация и интернационализация, какая разница?

208

Я собирался задать вопрос о подготовке настольного приложения для поддержки нескольких языков в пользовательском интерфейсе.

При поиске существующих вопросов по теме я думал слово «Международный», поэтому выбрал тег «Интернационализация» и прочитал несколько подходящих вопросов.

В конце концов я понял, что, вероятно, мне следует искать ответы на вопросы с меткой Localization. Однако, похоже, я не одинок в смешении этих двух терминов.

Итак, в чем заключаются ключевые различия между локализацией и интернационализацией?

Кроме того, действительно ли важно четкое различие между ними?

ясень
источник

Ответы:

232
Интернационализация (i18n)
процесс изменения программного обеспечения, чтобы оно не было привязано к одному языку / языку / культуре.
Локализация (l10n)
процесс добавления соответствующих ресурсов в ваше программное обеспечение для поддержки определенного языка / локали. Он больше по объему, чем просто эта статья в Википедии , но это хорошее начало.


Ценность различения между ними заключается в том, что (теоретически), как только ваша программа проходит процесс i18n, вы можете затем повторять многие процессы l10n по мере необходимости; Кроме того, приятно быть точным с языком.

Хэнк Гей
источник
9
Некоторые другие причины думать о них отдельно: QA интернационализации и QA локализации имеют разные тестовые случаи, Интернационализация - это разовая стоимость (больше или меньше), и поэтому, чем больше языков вы локализуете, тем выше ваш ROI. i18n, как правило, дороже, чем l10n для любой локали.
Майк Сиклер
@ Хэнк, @ Майк, очень полезные ответы, спасибо. Так что я был действительно прав, рассматривая интернационализацию в первую очередь. Моя цель - убедиться, что дизайн приложения будет поддерживать как минимум несколько языков в будущем, даже если изначально я просто сосредоточился на английском.
Эш
Несмотря на то, что он немного стар, этот высокий уровень обзора W3C в основном согласен с этим.
mkobit
1
Обычно интернационализация (i18n) выполняется разработчиком / инженером программного обеспечения один раз, тогда как локализация (l10n) выполняется соответствующим специалистом по языку / культуре для каждого рынка.
Четан
70

По словам Apple :

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

mouviciel
источник
32

Интернационализация готовит вашу заявку на локализацию. Например, вы можете кодировать символы, хранящиеся в вашей базе данных, в Unicode ( utf8mb4вместо latin1), перемещая строки в файлы ресурсов, позволяя использовать форматы даты, времени и валюты и т. Д.

Если вы хотите продать, например, китайскую версию своего приложения, вы должны локализовать ее, наняв переводчика для создания файлов ресурсов zh-CN и использовать новый формат даты / времени / валюты.

Марк Брекетт
источник
13

L10n может иногда показывать, где произошел сбой вашего i18n - например, когда в ваших словарях есть одна запись для слова, которое используется как существительное, и глагол в английском языке, который не переводится в то же слово на другом языке, или элементы пользовательского интерфейса. / дизайн не подходит для культуры (L / R ориентация).

Таким образом, l10n «в общем» происходит после i18n, но может вернуться к вашему i18n и потребовать дальнейшей доработки, поэтому вы не сможете считать ваше приложение полностью интернационализированным, пока не выполните несколько локализаций.

Кейд Ру
источник
11

Согласно Википедии

Интернационализация - это процесс разработки программного приложения, чтобы оно могло быть адаптировано к различным языкам и регионам without engineering changes.

Локализация - это процесс adapting internationalized softwareдля определенного региона или языка путем добавления компонентов, зависящих от локали, и перевода текста.

Кроме того , локализация (которая потенциально выполняется несколько раз для разных локалей) использует infrastructure or flexibility provided by internationalization(которая в идеале выполняется только один раз или является неотъемлемой частью текущей разработки).

Asik
источник
8

Глобализация (G11n): процесс разработки и маркетинга многоязычных программных продуктов на мировом рынке.

Разработка многоязычного программного обеспечения в настоящее время проходит два этапа: первый этап - интернационализация, а второй этап - локализация.

Интернационализация (I18n): это процесс обобщения продукта, чтобы он мог обрабатывать несколько языков и культурных соглашений без необходимости повторного дизайна (то есть нейтрального по отношению к языку и культуре).

Локализация (L10n): это процесс получения продукта и его лингвистического и культурного соответствия целевому языку (стране / региону и языку), где он будет использоваться и продаваться (т. Е. Язык и культура).


источник
8

Много ответов, много правильной информации, но мой ответ - немного другая точка зрения.

Интернационализация - это когда разработчик не имеет в коде прямых сообщений / сообщений об ошибках / названий кнопок / заголовков ярлыков / и т.д. на определенном языке, но имеет ключ, который передается в функцию перевода, а функция перевода в соответствии с локалью текущего пользователя будет возвращать окончательный текст на английском / франция / и т.д ...
Функция перевода работает с хранилищем (db / files / ассоциативный массив / etc).
Хранилище содержит ключи, которые используются в coode, и значения, которые представляют собой тексты на определенном языке, которые поддерживает приложение.

Локализация - это процесс добавления новых значений на новом языке (например, в Испании), соответствующих ключам, в хранилище без вовлечения разработчика в этот процесс.

Например, у нас есть хранилище:

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          |

и здесь разработчику не нужно обновлять код, функция перевода будет корректно переносить соответствующие тексты.

В. Ковпак
источник
3
Очень легко понять.
Вин Нгуен
1
Прекрасные примеры!
Джинджинов
6

Это очень просто, если вы будете следовать приведенным ниже определениям,

i18n (интернационализация) является

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

l10n (локализация) является

Процесс создания на реальных языка конкретных текстов и форматирования .

Пратик Джоши
источник
3

Здесь есть несколько очень хороших ответов, поэтому я не буду их перерабатывать. Однако в какой-то момент, обычно между интернационализацией тестирования и локализацией лингвистического тестирования, интернационализация и локализация имеют тенденцию пересекаться. Один человек упоминает, что l10n возвращает к интернационализации, но если вы проводите качественное тестирование i18n и создаете псевдокализованный контент, то итерации по вопросам разработки во время локализации должны быть исключением, а не правилом. Изменение размера интерфейса и, в частности, адаптация страниц для поддержки двунаправленных языков, таких как арабский и иврит, также, как правило, сочетают в себе проблемы локализации и инженерии интернационализации.

Достаточно сказать, что интернационализация включает в себя внесение изменений в источник для поддержки любой локали на основе требований. Если интернационализация сделана хорошо ...

... Локализация включает в себя адаптацию контента и некоторых уровней представления (например, жирный тэг), чтобы он наилучшим образом отвечал потребностям конкретных целевых рынков (регионов).

Много статей и официальных документов для справки здесь: http://www.lingoport.com/software-internationalization-articles

Адам
источник
3

Интернационализация - i18n - абстракция приложения от любого конкретного языка / культуры.

Локализация - l10n - подключение конкретной поддержки для конкретного языка / культуры / локали к вышеупомянутой платформе i18n.

По сути, выполняя сначала i18n, вы получаете намного меньше PITA.

Напротив, если вы сначала создадите приложение в конкретной локали, а затем попытаетесь его интернационализировать, это будет массивная PITA. Нелегко просто заменить конкретную английскую строку «Hello World» на Resource.Global.HelloWorld.

Разные языки будут иметь разные требования к пространству, расположению, выделению, цветам и т. Д.

Вам нужна платформа i18n с нуля, чтобы легко поддерживать это переключение между локалями из-за вышеуказанных различий, если вы даже думаете, что вам может потребоваться поддержка нескольких локалей .

Позже установить его в приложение просто очень сложно. Вам придется пересмотреть целый ряд архитектурных соображений и ограничений, которые вы (или кто-то другой) сделали в первый раз.

RISM
источник
2

Я чувствую, что локализация может идти без интернационализации, но .. интернационализация с локализацией не должна быть сделана ...


источник
2

аналогичный POV: представьте себе полку в вашей библиотеке, которая может занимать только одну книгу размером 4x4 дюйма. Интернационализация будет строить полку со всевозможными отделениями, которые позволят ей справиться с книгой любого размера и формы. И локализация установит все книги на нужных разделах. Думайте о своей базе данных, бизнес-логике и интерфейсе как о полке, а о разных языках, валютах и ​​ориентации текста - как о книгах.

Изз
источник
2

Давайте сначала поймем язык

locale - набор параметров, который определяет язык пользователя, регион и любые особые предпочтения варианта, которые пользователь хочет видеть в своем пользовательском интерфейсе. Обычно идентификатор языкового стандарта состоит как минимум из идентификатора языка и идентификатора региона.

i18n - Проектирование и разработка программного обеспечения для поддержки нескольких языков.

l10n - это возможно, только если ваше программное обеспечение поддерживает i18n. Но l10n гарантирует, что язык, формат даты, форматы валют и т. Д. Отображаются в контексте для конкретной локали.

Например,

# 1. 3 июня 1977 года будет переведено на испанский язык как 3 июня 1977 года.

# 2. Валюта в некоторых странах разделена знаком «.» против ','

# 3. Показать соответствующий символ валюты в зависимости от страны региона

# 1, # 2 и # 3 - варианты использования для локализации.

Если программное обеспечение рассчитано на поддержку # 1 ИЛИ # 2 ИЛИ # 3 в зависимости от языкового стандарта пользователя, то для продукта включена поддержка l10n.

Если он поддерживает несколько локалей, то его i18n включен.

Файз Мохамед Ханиф
источник
1

Просто,

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

Локализация (L10N) - это процесс перевода вашего программного обеспечения на несколько языков. Но прежде чем вы сможете локализовать свое программное обеспечение, вы его интернационализируете.

Сагар Туммар
источник
-1

Есть много определений i18n и l10n. Я использую:

Интернационализация (i18n) : адаптация вашего приложения к конкретному языку (перевод)

локализация (l10n) : адаптация вашего приложения к конкретному языку (деньги, формат чисел, формат даты ...).

Например, у нас может быть один и тот же язык для приложения, распространяемого во Франции и в Швейцарии (мы оба говорим по-французски, по крайней мере, в некоторых частях Швейцарии), но нам все равно потребуется некоторая адаптация для перевода евро на швейцарский франк.

Гийом
источник