Для локализации в английском языке иногда применяют сокращение «L10n», где буквы «L» и «n» — начало и окончание слова Localization, а число 10 — количество букв между ними.
MikTeX — пример сложного ПО, локализованного не полностью. Зелёные — функции, которые начинают работать сразу после подключения языкового пакета: 1. Ввод и отображение русских букв. 2. Ключевое слово «Глава». Оранжевые — функции, присутствующие в MikTeX, но требующие от пользователя дополнительных действий. 3. Наклонный знак «≤» — вводится командой \leqslant (вместо \le). Красные — функции, не адаптированные под русскую типографику (а пакетов, исправляющих это, в стандартной поставке нет). 4. Курсивный знак интеграла. 5. Курсивная греческая буква.
Локализация не ограничивается переводом интерфейса на другой язык. Это многоуровневая операция, первые шаги которой можно выполнить, даже оставив интерфейс нетронутым,[1] а последние — требуют взаимодействия программистов, дизайнеров и переводчиков[2]:
Обеспечить поддержку языка и национальных стандартов — необходимый минимум, чтобы программа могла выполнять свои функции в другой стране. Современные ОС берут на себя многие из этих вопросов, но и программист должен быть достаточно квалифицированным, чтобы использовать их возможности.
Корректная работа в локализованной операционной системе[3], для игр на ТВ-приставках — стандарт телевидения (PAL или NTSC).
Сделать, чтобы программа отвечала товарным законам целевой страны. В частности: издать документацию на целевом языке, подогнать функциональность под патенты, антимонопольное законодательство, законы о печати, о хранении персональных данных… Так, в Windows 98 исчезла подсветка часовых поясов из-за спорныхтерриторий: крайне трудно угодить обеим спорящим странам.[4]
Вывод на экран символов языка.[5] Подготовка локализованных шрифтов, если таковые нужны.[6] При этом адаптация под другую письменность может быть довольно сложной.[1]
Требования к ПО для госструктур — открытость данных, стандарты шифрования и прочее.
Перевод текстов в интерфейсе программы на целевой язык.
В сложном ПО не все части стоит переводить. Например, многие не согласны с переводом имён функций Excel на русский язык. Некоторые ошибки ОС выводятся, когда компьютер ещё не способен показывать русские буквы, при том, что специалист, кому эти сообщения адресованы, поймёт и английские.
Корректное выравнивание и размещение элементов интерфейса с учётом того, что сообщения-строки в разных языках могут иметь существенно разные размеры (например, обычное сообщение на английском, будучи переведено на немецкий язык, как правило, становится длиннее на 17,3 %[7]). Кроме того, существуют языки с написанием справа налево (арабский, иврит) и сверху вниз (японский);
Чрезвычайно важен перевод терминологии. Например, спорным является применяемый в Windows термин «обозреватель», обозначающий браузер.
Если есть текст на изображениях, его нужно перерисовать. Если есть речевые сообщения, их надо наговорить.
Тонкая настройка под целевую страну.
Работа со словоформами. Примером будет пресловутое «Найдено 3 файлов».
Дополнительные стандарты, не влияющие на основную функциональность программы. Например: формат даты/времени в медиаплеере, особенности типографики.
Обеспечить интероперабельность локализированной программы с исходной. Например: мы ввели в документ формулу «x*2,5». Будет ли она работать, если открыть его в английской версии? Наладили сетевую игру русского с английским — не разорвёт ли связь, сославшись на несовпадение версий?
Обеспечить интероперабельность программы с ПО, распространённым в целевой стране. Например, от страны к стране варьируются бухгалтерские программы, и «1С: Предприятие» мало известно за пределами стран СССР.
Учёт национального менталитета. Например: красный цвет у русских ассоциируется не только с опасностью, но и с праздником. В играх зачастую приходится менять юмор, а изредка — даже корректировать сюжет (например, в Syberia 2 турецкий иммигрант Sirkos превратился в еврея Цукермана).
Американский почтовый ящик, который мы привыкли видеть в программах электронной почтыПерерисовка графики (сплэш-экранов, значков, клипартов и т. д.) под реалии другой страны. Например, в разных странах могут выглядеть по-разному дорожные знаки, вилки и розетки, почтовый ящик. Глобус поворачивают к зрителю той частью света, на которую рассчитывается продукт. В Великобритании у выключателя включенным является нижнее положение, в бывшем СССР — верхнее. Значки перерисовывают крайне редко, поэтому дизайнеры изначально стараются сделать их как можно более «интернациональными».
Таким образом, локализация — это сложная и всеобъемлющая операция[8], и уже при разработке ПО соображения будущей интернационализации должны учитываться самым серьёзным образом. Мы привыкли видеть программное обеспечение, русифицированное по первому-второму уровню; сложного ПО с исчерпывающей русификацией практически не существует. Примером глубокой локализации может служить операционная система Mac OS X компании Apple, где локализация нередко включает и национально-ориентированные пиктограммы.
Инструментарий для локализации
Некоторые инструменты для визуального программирования предоставляют возможности и инструменты для облегчения локализации. Например, в GTK чаще всего нет необходимости специально заботиться о разной длине строк в разных языках, так как виджеты автоматически запрашивают необходимый для себя размер.
Однако в большинстве случаев эти возможности значительно ограничены, что сильно отражается на итоговой стоимости локализации. В этих инструментах нет средств для работы с переводчиком, нет автоматизированных проверок перевода, да и контролировать перевод приложения среднего размера становится невозможно. Поэтому, приступая к локализации, стоит задуматься о специализированных средствах, заточенных именно на задачу перевода программного обеспечения.
Для локализации программного обеспечения часто применяются специализированные средства, например, Passolo, которые позволяют переводить меню и сообщения в программных ресурсах и непосредственно в откомпилированных программах, а также тестировать корректность локализации. Для перевода аудиовизуальных материалов (главным образом фильмов) также используются специализированные средства, например, Swift, которые объединяют в себе некоторые аспекты памяти переводов, но дополнительно обеспечивают возможность появления субтитров по времени, их форматирования на экране, следования.
Ресурсы Windows могут существовать в одной программе в нескольких копиях для разных языков — программа из настроек локали определяет язык пользователя и по умолчанию берёт, например, русский, а если он отсутствует, то только тогда английский. При этом русифицированными могут быть не только тексты, но и иконки — такие, как пиктограммы Ж, К, Ч на панели форматирования текста в редакторе документов. Существуют программы-редакторы, позволяющие просматривать, изменять и добавлять в откомпилированные программы ресурсы с новыми языками (например, Resource Hacker или Resource Tuner).
Псевдолокализация
Когда программа дорастает до первого перевода, возникает порочный круг. Нужно проверить, что функции перевода работают: окна компонуются, строки подставляются, после смены языка ничего не остаётся на старом, ни одна строка не проходит через однобайтовую кодировку (последнее актуально для некоторых старых систем программирования вроде Embarcadero Delphi). Для этого нужна другая локализация, но её нет — чтобы дать задание переводчику, нужно быть уверенным, что оно достаточно полное и не придётся несколько раз давать строки на доперевод.
Для подобной начальной проверки используется так называемая псевдолокализация — какое-либо автоматическое преобразование исходного текста. Например: Open file → ≈§Ópèñ fílè×. В англоязычных странах в роли псевдолокализации любят поросячью латынь (и даже оставляют её как пасхальное яйцо).
В условиях бывшего СССР, когда любой программист знает два, а то и три языка — русский, английский и национальный — псевдолокализация не так нужна, ведь программист (или кто-то из находящихся рядом, например тестер) своими силами может сделать доперевод или даже полный перевод. Но даже тут есть препятствия: программист дороже переводчика, может не иметь нужных навыков (от владения художественным словом до обычной грамотности), программе для западной публики русский перевод попросту не нужен.
Параллельная разработка и локализация
Если программа не приходит переводчикам готовой раз в несколько лет, а постоянно разрабатывается по принципам непрерывной интеграции, возникает вопрос доперевода новой функциональности и создания строк-затычек (строк на исходном языке или с автоматическим переводом, если переводчика нет).
Простейший вариант перевода «живой» программы сделан в Gettext, Qt Linguist — оригинал зашит в исходный текст программы, а для остальных языков ресурс хранится в виде «Save file=Сохранить файл». Достоинства такого механизма: быстрое создание интернациональной программы из монолитной[9]; строки-затычки автоматически есть; если исходный текст изменился и переводчик до него не дошёл, система гарантированно не возьмёт старый (возможно, неверный) перевод; работать можно даже в текстовом редакторе; автоматически удаляются брошенные строки. Недостатки: за текст-оригинал отвечает программист, что требует от него грамотности и готовности вносить изменения; если текст-оригинал изменился, переводчик не видит (или плохо видит), как было; функционально далёкие строки объединяются в одну, если программист не объявил иное[10] — строка «Файлы/-ов» в Tixati говорит, что один и тот же текст использовался в заголовке «Files» и синтезированном тексте «2 Files»; не решается вопрос сборки осмысленных предложений (те же «2 Файлы/-ов» в Tixati); сложно перевести часть программы (например, окно) и посмотреть её вживую — строки из разных мест могут быть перемешаны.
Существуют и более сложные механизмы.
Языковые теги и коды
Языковые теги могут использоваться для обозначения региональных особенностей того или иного языка. Имеется основной субтег для идентификации языка (например, «en» для английского) и возможный дополнительный субтег для уточнения региона использования (например, «GB» — Great Britain, Великобритания). Между субтегами обычно ставится дефис, в отдельных случаях — знак подчёркивания.
Языковые коды определяются стандартом ISO 639-2 в виде трёхбуквенного термина для идентификации каждого языка, например «eng» для английского или «tvl» для языка Тувалу. В то же время, эти коды не могут использоваться в качестве тегов, если соответствующий язык имеет двухбуквенный код согласно стандарту ISO 639-1.
↑Точка с запятой (неопр.). IT Happens (9 августа 2011). — Пример ПО, некорректно работающего в локализованной ОС. Дата обращения: 7 февраля 2014. Архивировано 22 февраля 2014 года.
Ruby — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. Язык обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностями. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу.
Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления ; 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы.
Компиля́тор — программа, переводящая написанный на языке программирования текст в набор машинных кодов.
Исхо́дный код — текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком. В обобщённом смысле — любые входные данные для транслятора. Исходный код транслируется в исполняемый код целиком до запуска программы при помощи компилятора или может исполняться сразу при помощи интерпретатора.
Си — компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.
API — программный интерфейс, то есть описание способов взаимодействия одной компьютерной программы с другими. Обычно входит в описание какого-либо интернет-протокола, программного каркаса (фреймворка) или стандарта вызовов функций операционной системы. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.
Кроссплатформенность (межплатформенность) — способность программного обеспечения работать с несколькими аппаратными платформами или операционными системами. Обеспечивается благодаря использованию высокоуровневых языков программирования, сред разработки и выполнения, поддерживающих условную компиляцию, компоновку и выполнение кода для различных платформ. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.
Автоматизи́рованный перево́д — перевод текстов на компьютере с использованием компьютерных технологий. От машинного перевода (МП) он отличается тем, что весь процесс перевода осуществляется человеком, компьютер лишь помогает ему произвести готовый текст либо за меньшее время, либо с лучшим качеством. CAT-программы предлагают доступ к словарям, глоссариям, запоминают выбор переводчика и в следующих схожих файлах автоматически подставляют перевод ранее переведенных слова. Данные программы помогают сократить время работы переводчиков над однотипными текстами, а также сокращают процент грамматических, пунктуационных и орфографических ошибок.
Интернационализа́ция — технологические приёмы разработки, упрощающие адаптацию продукта к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.
Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:
узнавать текущие значения переменных;
выяснять, по какому пути выполнялась программа.
SciTE — кроссплатформенный текстовый редактор, созданный Нилом Ходжсоном с использованием разработанного им же компонента редактирования Scintilla. Предназначен, в основном, для редактирования исходных текстов программ и выполняет подсветку синтаксиса для многих языков программирования, разметки, описания аппаратуры. SciTE характеризуется как компактный текстовый редактор для программистов с удобно реализованным сворачиванием кода, развитой подсветкой синтаксиса и другими полезными функциями. SciTe является переносимым приложением и работает при запуске с переносных устройств. Размер дистрибутива SciTE не превышает 2,5 МБ.
Оболо́чка операцио́нной систе́мы — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.
Память переводов — база данных, содержащая набор ранее переведённых сегментов текста.
gettext — библиотека проекта GNU для интернационализации, широко применяемая в свободном ПО.
Автоматизация сборки — этап процесса разработки программного обеспечения, заключающийся в автоматизации широкого спектра задач, решаемых программистами в их повседневной деятельности.
«Цитата из Библии» — бесплатная программа для работы с библейскими текстами. Изначально разрабатывалась под ОС Windows, может функционировать и в Linux через Wine.
Transifex — веб-ориентированная платформа управления локализацией. Платформа разработана для технических проектов с частым обновлением содержания: программного обеспечения, документации и веб-сайтов. Технические средства, предоставляемые платформой, позволяют разработчикам автоматизировать процесс локализации.
Локализация компьютерной игры — подготовка программного и аппаратного обеспечения компьютерной игры к продаже в новом регионе или стране. Локализация включает перевод с языка оригинала на иностранный язык, изменение художественных средств игры, создание новых запакованных файлов и справочных руководств, запись новых аудиофайлов, преобразование аппаратного обеспечения, изменение отдельных фрагментов игры согласно культурным особенностям определённого региона, добавление дополнительных участков для перемещения вырезанного контента.
В вычислительной технике интернационализация и локализация — это средства адаптации компьютерного программного обеспечения к другим языкам, региональным различиям и техническим требованиям конкретного рынка. Интернационализация — это процесс разработки программных приложений, которые потенциально могут адаптироваться к различным языкам и регионам без инженерных изменений. Локализация — это процесс адаптации интернационализированного программного обеспечения для определенного региона или языка путем добавления локальных компонентов и переведенного текста. Локализация использует инфраструктуру или гибкость, обеспечиваемую интернационализацией.
Жёсткое кодирование — это практика разработки программного обеспечения, заключающаяся в встраивании данных непосредственно в исходный код программы или другой исполняемый объект, в отличие от получения данных из внешних источников или их генерации во время выполнения.
Эта страница основана на статье Википедии. Текст доступен на условиях лицензии CC BY-SA 4.0; могут применяться дополнительные условия. Изображения, видео и звуки доступны по их собственным лицензиям.