В вычислительной технике интернационализация и локализация ( американская ) или интернационализация и локализация ( британская ), часто обозначаемые сокращенно i18n и l10n соответственно, [1] являются средствами адаптации компьютерного программного обеспечения к различным языкам , региональным особенностям и техническим требованиям целевой локали . [2]
Интернационализация — это процесс разработки программного приложения , позволяющий адаптировать его к различным языкам и регионам без технических изменений. Локализация — это процесс адаптации интернационализированного программного обеспечения для конкретного региона или языка путем перевода текста и добавления компонентов, специфичных для данного региона.
Локализация (которая потенциально выполняется несколько раз для разных языков) использует инфраструктуру или гибкость, обеспечиваемую интернационализацией (которая в идеале выполняется только один раз перед локализацией или как неотъемлемая часть текущей разработки). [3]
Термины часто сокращаются до нумеронимов i18n (где 18 означает количество букв между первым i и последним n в слове «интернационализация» , использование которого было придумано в Digital Equipment Corporation в 1970-х или 1980-х годах) [4] [5] и l10n для локализации из-за длины слов. [1] [6] Некоторые авторы пишут последний термин с заглавной буквы ( L10n ) , чтобы облегчить различие между ними. [7]
Некоторые компании, такие как IBM и Oracle , используют термин «глобализация» , g11n , для сочетания интернационализации и локализации. [8]
Microsoft определяет интернационализацию как сочетание готовности к работе во всем мире и локализации. Готовность к работе — это задача разработчика, которая позволяет использовать продукт с несколькими сценариями и культурами (глобализация) и разделяет ресурсы пользовательского интерфейса в локализуемом формате (локализуемость, сокращенно L12y ). [9] [10]
Hewlett-Packard и HP-UX создали систему под названием «Поддержка национальных языков» или «Поддержка родного языка» (NLS) для создания локализуемого программного обеспечения. [2]
Согласно «Программному обеспечению без границ» , аспекты проектирования, которые следует учитывать при интернационализации продукта, включают «кодирование данных, данные и документацию, создание программного обеспечения, поддержку аппаратных устройств и взаимодействие с пользователем»; в то время как ключевыми областями проектирования, которые следует учитывать при создании полностью интернационализированного продукта с нуля, являются «взаимодействие с пользователем, разработка алгоритмов и форматов данных, программные услуги и документация». [2]
Перевод обычно является наиболее трудоемким компонентом языковой локализации . [2] Это может включать в себя:
Компьютерное программное обеспечение может сталкиваться с различиями, выходящими за рамки простого перевода слов и фраз, поскольку компьютерные программы могут динамически генерировать контент. Эти различия, возможно, придется принять во внимание в процессе интернационализации при подготовке к переводу. Многие из этих различий настолько регулярны, что преобразование между языками можно легко автоматизировать. Общий репозиторий данных локали от Unicode предоставляет набор таких различий. Его данные используются основными операционными системами , включая Microsoft Windows , macOS и Debian , а также крупными интернет-компаниями и проектами, такими как Google и Wikimedia Foundation . Примеры таких различий включают в себя:
В разных странах действуют разные экономические конвенции, включая вариации:
В частности, в большинстве этих случаев Соединенные Штаты и Европа различаются. Другие области часто следуют одному из них.
Определенные сторонние сервисы, такие как онлайн-карты, прогнозы погоды или поставщики платежных услуг , могут быть недоступны по всему миру у одних и тех же операторов связи или вообще недоступны.
Часовые пояса различаются по всему миру, и это необходимо учитывать, если изначально продукт взаимодействовал только с людьми, находящимися в одном часовом поясе. Для интернационализации UTC часто используется внутри страны, а затем преобразуется в местный часовой пояс для отображения.
В разных странах действуют разные законодательные требования, означающие, например:
Локализация также может учитывать различия в культуре, такие как:
Чтобы вывести продукт на международный уровень , важно рассмотреть различные рынки, на которые этот продукт, как ожидается, выйдет. [2] Такие детали, как длина поля для почтовых адресов, уникальный формат адреса, возможность сделать поле почтового индекса необязательным для адреса стран, у которых нет почтовых индексов, или поле штата для стран, у которых нет штатов, а также введение. новых потоков регистрации, соответствующих местным законам, — это лишь некоторые примеры, которые делают интернационализацию сложным проектом. [7] [16] Более широкий подход учитывает культурные факторы, например, адаптацию логики бизнес-процесса или включение отдельных культурных (поведенческих) аспектов. [2] [17]
Уже в 1990-х годах такие компании, как Bull , широко использовали машинный перевод ( Systran ) для всей своей переводческой деятельности: переводчики-люди выполняли предварительное редактирование (делание ввода машиночитаемым) и постредактирование . [2]
Как при реинжиниринге существующего программного обеспечения, так и при разработке нового интернационализированного программного обеспечения первым шагом интернационализации является разделение каждой потенциально зависящей от локали части (будь то код, текст или данные) в отдельный модуль. [2] Каждый модуль затем может либо полагаться на стандартную библиотеку/зависимость, либо заменяться независимо по мере необходимости для каждой локали.
В настоящее время преобладающая практика заключается в том, что приложения помещают текст в файлы ресурсов, которые загружаются во время выполнения программы по мере необходимости. [2] Эти строки, хранящиеся в файлах ресурсов, относительно легко перевести. Программы часто создаются для обращения к библиотекам ресурсов в зависимости от выбранных данных локали.
Хранилище переводимых и переведенных строк иногда называют каталогом сообщений [2] , поскольку строки называются сообщениями. Каталог обычно содержит набор файлов в определенном формате локализации и стандартную библиотеку для работы с этим форматом. Одной из программных библиотек и форматов, которые помогают в этом, является gettext .
Таким образом, чтобы приложение поддерживало несколько языков, необходимо разработать приложение так, чтобы оно выбирало соответствующий файл языковых ресурсов во время выполнения. Код, необходимый для управления проверкой ввода данных и многими другими типами данных, зависящими от языкового стандарта, также должен поддерживать различные требования к языковому стандарту. Современные системы разработки и операционные системы включают в себя сложные библиотеки для международной поддержки этих типов, см. также данные стандартной локали выше.
Многие вопросы локализации (например, направление письма, сортировка текста) требуют более глубоких изменений в программном обеспечении, чем перевод текста. Например, OpenOffice.org достигает этого с помощью переключателей компиляции.
Метод глобализации включает после планирования три этапа реализации: интернационализацию, локализацию и обеспечение качества. [2]
В некоторой степени (например, для обеспечения качества ) в команды разработчиков входит кто-то, кто управляет базовыми/центральными этапами процесса, а затем обеспечивает выполнение всех остальных. [2] Такие люди обычно понимают иностранные языки и культуры и имеют некоторое техническое образование. Специализированные технические писатели должны создать синтаксис, соответствующий культуре, для потенциально сложных концепций, а также инженерные ресурсы для развертывания и тестирования элементов локализации.
После правильной интернационализации программное обеспечение может полагаться на более децентрализованные модели локализации: бесплатное программное обеспечение и программное обеспечение с открытым исходным кодом обычно полагаются на самостоятельную локализацию конечных пользователей и добровольцев, иногда организованных в группы. [18] Например, в проекте GNOME есть группы волонтеров-переводчиков более чем на 100 языков. [19] MediaWiki поддерживает более 500 языков, из которых 100 в основном полностью готовы по состоянию на сентябрь 2023 года [update]. [20]
При переводе существующего текста на другие языки сложно поддерживать параллельные версии текстов на протяжении всего срока службы продукта. [21] Например, если сообщение, отображаемое пользователю, изменено, все переведенные версии должны быть изменены.
В коммерческом контексте преимуществом локализации является доступ к большему количеству рынков. В начале 1980-х Lotus 1-2-3 потребовалось два года, чтобы разделить программный код и текст, и потеряло лидерство на рынке Европы над Microsoft Multiplan . [2] Компания MicroPro обнаружила, что использование австрийского переводчика для рынка Западной Германии привело к тому, что ее документация WordStar , по словам одного из руководителей, «не имела того тона, который она должна была иметь». [22]
Однако это требует значительных затрат, выходящих далеко за рамки инженерных разработок. Кроме того, бизнес-операции должны адаптироваться для управления производством, хранением и распространением множества отдельных локализованных продуктов, которые часто продаются в совершенно разных валютах, нормативных условиях и налоговых режимах.
Наконец, отделы продаж, маркетинга и технической поддержки также должны облегчить свою работу на новых языках, чтобы поддержать клиентов в локализованных продуктах. Предложение локализованного продукта может оказаться экономически невыгодным, особенно для относительно небольших языковых групп. Даже если большое количество языков может оправдать локализацию данного продукта, а внутренняя структура продукта уже допускает локализацию, данному разработчику или издателю программного обеспечения может не хватать размера и сложности для управления вспомогательными функциями, связанными с работой в нескольких регионах.
. В двух словах, локализация вращается вокруг объединения языка и технологий для создания продукта, который может преодолевать культурные и языковые барьеры. Не больше, не меньше.
Многие люди, уставшие писать эти длинные слова снова и снова, взяли за привычку вместо этого писать
i18n
и
l10n
, цитируя первую и последнюю букву каждого слова и заменяя ряд промежуточных букв числом, просто указывающим, сколько таких букв. есть.
Заглавная буква L в L10n помогает отличить ее от строчной буквы i в i18n.