Я собирался задать вопрос о подготовке настольного приложения для поддержки нескольких языков в пользовательском интерфейсе.
При поиске существующих вопросов по теме я думал слово «Международный», поэтому выбрал тег «Интернационализация» и прочитал несколько подходящих вопросов.
В конце концов я понял, что, вероятно, мне следует искать ответы на вопросы с меткой Localization. Однако, похоже, я не одинок в смешении этих двух терминов.
Итак, в чем заключаются ключевые различия между локализацией и интернационализацией?
Кроме того, действительно ли важно четкое различие между ними?
По словам Apple :
источник
Интернационализация готовит вашу заявку на локализацию. Например, вы можете кодировать символы, хранящиеся в вашей базе данных, в Unicode (
utf8mb4
вместоlatin1
), перемещая строки в файлы ресурсов, позволяя использовать форматы даты, времени и валюты и т. Д.Если вы хотите продать, например, китайскую версию своего приложения, вы должны локализовать ее, наняв переводчика для создания файлов ресурсов zh-CN и использовать новый формат даты / времени / валюты.
источник
L10n может иногда показывать, где произошел сбой вашего i18n - например, когда в ваших словарях есть одна запись для слова, которое используется как существительное, и глагол в английском языке, который не переводится в то же слово на другом языке, или элементы пользовательского интерфейса. / дизайн не подходит для культуры (L / R ориентация).
Таким образом, l10n «в общем» происходит после i18n, но может вернуться к вашему i18n и потребовать дальнейшей доработки, поэтому вы не сможете считать ваше приложение полностью интернационализированным, пока не выполните несколько локализаций.
источник
Согласно Википедии
Интернационализация - это процесс разработки программного приложения, чтобы оно могло быть адаптировано к различным языкам и регионам
without engineering changes
.Локализация - это процесс
adapting internationalized software
для определенного региона или языка путем добавления компонентов, зависящих от локали, и перевода текста.Кроме того , локализация (которая потенциально выполняется несколько раз для разных локалей) использует
infrastructure or flexibility provided by internationalization
(которая в идеале выполняется только один раз или является неотъемлемой частью текущей разработки).источник
Глобализация (G11n): процесс разработки и маркетинга многоязычных программных продуктов на мировом рынке.
Разработка многоязычного программного обеспечения в настоящее время проходит два этапа: первый этап - интернационализация, а второй этап - локализация.
Интернационализация (I18n): это процесс обобщения продукта, чтобы он мог обрабатывать несколько языков и культурных соглашений без необходимости повторного дизайна (то есть нейтрального по отношению к языку и культуре).
Локализация (L10n): это процесс получения продукта и его лингвистического и культурного соответствия целевому языку (стране / региону и языку), где он будет использоваться и продаваться (т. Е. Язык и культура).
источник
Много ответов, много правильной информации, но мой ответ - немного другая точка зрения.
Интернационализация - это когда разработчик не имеет в коде прямых сообщений / сообщений об ошибках / названий кнопок / заголовков ярлыков / и т.д. на определенном языке, но имеет ключ, который передается в функцию перевода, а функция перевода в соответствии с локалью текущего пользователя будет возвращать окончательный текст на английском / франция / и т.д ...
Функция перевода работает с хранилищем (db / files / ассоциативный массив / etc).
Хранилище содержит ключи, которые используются в coode, и значения, которые представляют собой тексты на определенном языке, которые поддерживает приложение.
Локализация - это процесс добавления новых значений на новом языке (например, в Испании), соответствующих ключам, в хранилище без вовлечения разработчика в этот процесс.
Например, у нас есть хранилище:
Интернационализация он использует в коде что - то вроде
confirm(t(agree));
вместоconfirm("I agree");
илиconfirm("Sono d'accordo");
локализация - это добавить новый язык в нашей памяти, как:
и здесь разработчику не нужно обновлять код, функция перевода будет корректно переносить соответствующие тексты.
источник
Это очень просто, если вы будете следовать приведенным ниже определениям,
i18n (интернационализация) является
l10n (локализация) является
источник
Здесь есть несколько очень хороших ответов, поэтому я не буду их перерабатывать. Однако в какой-то момент, обычно между интернационализацией тестирования и локализацией лингвистического тестирования, интернационализация и локализация имеют тенденцию пересекаться. Один человек упоминает, что l10n возвращает к интернационализации, но если вы проводите качественное тестирование i18n и создаете псевдокализованный контент, то итерации по вопросам разработки во время локализации должны быть исключением, а не правилом. Изменение размера интерфейса и, в частности, адаптация страниц для поддержки двунаправленных языков, таких как арабский и иврит, также, как правило, сочетают в себе проблемы локализации и инженерии интернационализации.
Достаточно сказать, что интернационализация включает в себя внесение изменений в источник для поддержки любой локали на основе требований. Если интернационализация сделана хорошо ...
... Локализация включает в себя адаптацию контента и некоторых уровней представления (например, жирный тэг), чтобы он наилучшим образом отвечал потребностям конкретных целевых рынков (регионов).
Много статей и официальных документов для справки здесь: http://www.lingoport.com/software-internationalization-articles
источник
Интернационализация - i18n - абстракция приложения от любого конкретного языка / культуры.
Локализация - l10n - подключение конкретной поддержки для конкретного языка / культуры / локали к вышеупомянутой платформе i18n.
По сути, выполняя сначала i18n, вы получаете намного меньше PITA.
Напротив, если вы сначала создадите приложение в конкретной локали, а затем попытаетесь его интернационализировать, это будет массивная PITA. Нелегко просто заменить конкретную английскую строку «Hello World» на Resource.Global.HelloWorld.
Разные языки будут иметь разные требования к пространству, расположению, выделению, цветам и т. Д.
Вам нужна платформа i18n с нуля, чтобы легко поддерживать это переключение между локалями из-за вышеуказанных различий, если вы даже думаете, что вам может потребоваться поддержка нескольких локалей .
Позже установить его в приложение просто очень сложно. Вам придется пересмотреть целый ряд архитектурных соображений и ограничений, которые вы (или кто-то другой) сделали в первый раз.
источник
Я чувствую, что локализация может идти без интернационализации, но .. интернационализация с локализацией не должна быть сделана ...
источник
аналогичный POV: представьте себе полку в вашей библиотеке, которая может занимать только одну книгу размером 4x4 дюйма. Интернационализация будет строить полку со всевозможными отделениями, которые позволят ей справиться с книгой любого размера и формы. И локализация установит все книги на нужных разделах. Думайте о своей базе данных, бизнес-логике и интерфейсе как о полке, а о разных языках, валютах и ориентации текста - как о книгах.
источник
Давайте сначала поймем язык
locale - набор параметров, который определяет язык пользователя, регион и любые особые предпочтения варианта, которые пользователь хочет видеть в своем пользовательском интерфейсе. Обычно идентификатор языкового стандарта состоит как минимум из идентификатора языка и идентификатора региона.
i18n - Проектирование и разработка программного обеспечения для поддержки нескольких языков.
l10n - это возможно, только если ваше программное обеспечение поддерживает i18n. Но l10n гарантирует, что язык, формат даты, форматы валют и т. Д. Отображаются в контексте для конкретной локали.
Например,
# 1. 3 июня 1977 года будет переведено на испанский язык как 3 июня 1977 года.
# 2. Валюта в некоторых странах разделена знаком «.» против ','
# 3. Показать соответствующий символ валюты в зависимости от страны региона
# 1, # 2 и # 3 - варианты использования для локализации.
Если программное обеспечение рассчитано на поддержку # 1 ИЛИ # 2 ИЛИ # 3 в зависимости от языкового стандарта пользователя, то для продукта включена поддержка l10n.
Если он поддерживает несколько локалей, то его i18n включен.
источник
Просто,
Интернационализация (I18N) - это процесс адаптации вашего программного обеспечения к различным языкам, регионам и культурам.
Локализация (L10N) - это процесс перевода вашего программного обеспечения на несколько языков. Но прежде чем вы сможете локализовать свое программное обеспечение, вы его интернационализируете.
источник
Есть много определений i18n и l10n. Я использую:
Интернационализация (i18n) : адаптация вашего приложения к конкретному языку (перевод)
локализация (l10n) : адаптация вашего приложения к конкретному языку (деньги, формат чисел, формат даты ...).
Например, у нас может быть один и тот же язык для приложения, распространяемого во Франции и в Швейцарии (мы оба говорим по-французски, по крайней мере, в некоторых частях Швейцарии), но нам все равно потребуется некоторая адаптация для перевода евро на швейцарский франк.
источник