Локализация программного обеспечения
![]() Локализа́ция програ́ммного обеспе́чения — процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой. Для локализации в английском языке иногда применяют сокращение «L10n», где буквы «L» и «n» — начало и окончание слова Localization, а число 10 — количество букв между ними. Что такое локализация![]() Зелёные — функции, которые начинают работать сразу после подключения языкового пакета: 1. Ввод и отображение русских букв. 2. Ключевое слово «Глава». Оранжевые — функции, присутствующие в MikTeX, но требующие от пользователя дополнительных действий. 3. Наклонный знак «≤» — вводится командой \leqslant (вместо \le ).Красные — функции, не адаптированные под русскую типографику (а пакетов, исправляющих это, в стандартной поставке нет). 4. Курсивный знак интеграла. 5. Курсивная греческая буква. Локализация не ограничивается переводом интерфейса на другой язык. Это многоуровневая операция, первые шаги которой можно выполнить, даже оставив интерфейс нетронутым,[1] а последние — требуют взаимодействия программистов, дизайнеров и переводчиков[2]:
Таким образом, локализация — это сложная и всеобъемлющая операция[8], и уже при разработке ПО соображения будущей интернационализации должны учитываться самым серьёзным образом. Мы привыкли видеть программное обеспечение, русифицированное по первому-второму уровню; сложного ПО с исчерпывающей русификацией практически не существует. Примером глубокой локализации может служить операционная система Mac OS X компании Apple, где локализация нередко включает и национально-ориентированные пиктограммы. Инструментарий для локализацииНекоторые инструменты для визуального программирования предоставляют возможности и инструменты для облегчения локализации. Например, в GTK чаще всего нет необходимости специально заботиться о разной длине строк в разных языках, так как виджеты автоматически запрашивают необходимый для себя размер. Однако в большинстве случаев эти возможности значительно ограничены, что сильно отражается на итоговой стоимости локализации. В этих инструментах нет средств для работы с переводчиком, нет автоматизированных проверок перевода, да и контролировать перевод приложения среднего размера становится невозможно. Поэтому, приступая к локализации, стоит задуматься о специализированных средствах, заточенных именно на задачу перевода программного обеспечения. Для локализации программного обеспечения часто применяются специализированные средства, например, Passolo, которые позволяют переводить меню и сообщения в программных ресурсах и непосредственно в откомпилированных программах, а также тестировать корректность локализации. Для перевода аудиовизуальных материалов (главным образом фильмов) также используются специализированные средства, например, Swift, которые объединяют в себе некоторые аспекты памяти переводов, но дополнительно обеспечивают возможность появления субтитров по времени, их форматирования на экране, следования. Ресурсы Windows могут существовать в одной программе в нескольких копиях для разных языков — программа из настроек локали определяет язык пользователя и по умолчанию берёт, например, русский, а если он отсутствует, то только тогда английский. При этом русифицированными могут быть не только тексты, но и иконки — такие, как пиктограммы Ж, К, Ч на панели форматирования текста в редакторе документов. Существуют программы-редакторы, позволяющие просматривать, изменять и добавлять в откомпилированные программы ресурсы с новыми языками (например, Resource Hacker или Resource Tuner). ПсевдолокализацияКогда программа дорастает до первого перевода, возникает порочный круг. Нужно проверить, что функции перевода работают: окна компонуются, строки подставляются, осмысленные фразы собираются подстановкой, а не склеиванием, шрифт верный, после смены языка ничего не остаётся на старом, ни одна строка не проходит через однобайтовую кодировку (последнее актуально для старых систем программирования вроде Embarcadero Delphi). Для этого нужна другая локализация, но её нет — чтобы дать задание переводчику, нужно быть уверенным, что оно достаточно полное и не придётся несколько раз давать строки на доперевод[9]. К тому же программист и тестер, не зная языка, не скажут, верна ли строка. Для подобной начальной проверки используется так называемая псевдолокализация — какое-либо автоматическое преобразование исходного текста[10]. Например: Open file → ≈§Ópèñ fílè×. Синтез осмысленных текстов конкатенацией будет выглядеть как 2 ≈fílèš×, подстановкой как ≈2 fílèš×. В англоязычных странах в роли псевдолокализации любят поросячью латынь (и даже оставляют её как пасхальное яйцо) — за тем исключением, что не проверяет Юникод и конкатенацию. Параллельная разработка и локализацияЕсли программа не приходит переводчикам готовой раз в несколько лет, а постоянно разрабатывается по принципам непрерывной интеграции, возникает вопрос доперевода новой функциональности и создания строк-затычек (строк на исходном языке или с автоматическим переводом, если переводчика нет). Простейший вариант перевода «живой» программы сделан в Gettext, Qt Linguist — оригинал зашит в исходный текст программы, а для остальных языков ресурс хранится в виде «Save file → Сохранить файл». Достоинства такого механизма:
Недостатки:
Существуют и более сложные механизмы. СегментацияКогда большой текст является цельной единицей локализации, при параллельной разработке и локализации возникают проблемы.
Для этого при локализации текст делят на меньшие (не подкреплённые логикой программы) единицы — сегменты (предложения или абзацы). Так, в формате XLIFF каждая единица перевода состоит из одного или нескольких сегментов. Сегментация может использоваться и при переводе статичных текстов (не меняющихся программ) для совместной работы. Недостатки этого подхода:
Языковые теги и кодыЯзыковые теги могут использоваться для обозначения региональных особенностей того или иного языка. Имеется основной субтег для идентификации языка (например, «en» для английского) и возможный дополнительный субтег для уточнения региона использования (например, «GB» — Great Britain, Великобритания). Между субтегами обычно ставится дефис, в отдельных случаях — знак подчёркивания. Примеры языковых тегов:
Языковые коды определяются стандартом ISO 639-2 в виде трёхбуквенного термина для идентификации каждого языка, например «eng» для английского или «tvl» для языка Тувалу. В то же время, эти коды не могут использоваться в качестве тегов, если соответствующий язык имеет двухбуквенный код согласно стандарту ISO 639-1. См. такжеПримечания
Ссылки |
Portal di Ensiklopedia Dunia