- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF73:Локализация ПО
Материал из Linuxformat.
Содержание |
Локализация ПО
«Чем я могу вам помочь?» Применительно к миру Open Source, большая часть жителей которого находится за пределами России, ответ прост — переводом (вы подумали про матпомощь? Зря!). Владимир Давыдов расскажет, как это нужно делать…
Что делает продукт удобным для пользователя? Не для опытного администратора или программиста, а для обычного человека? Удобный и понятный интерфейс и, что очень важно, наличие локализованной версии. Иностранный язык знают далеко не все, да и те, кто знают, зачастую предпочитают работать в родном языковом окружении.
Можно ли сделать так, чтобы бухгалтер Петр Захарович из Нижних Полянок не побоялся бы считать в электронных таблицах Gnumeric и раскладывать пасьянс Солитер в Linux, а учитель информатики Борис Федорович из Крякино мог бы учить детей программировать на Free Pascal и работать в OpenOffice.org? безусловно! Только все эти приложения, да и сама среда должны заговорить с ними по-русски. Вот тут-то на помощь и приходит локализация.
Cогласитесь, работать с такой программой приятней, чем с ее английской версией.
что такое локализация?
Хотите узнать, откуда произошла аббревиатура l10n? Все просто: между буквами «l» и «n» в английском слове «localization» находится именно 10 других! Точно таким же образом слово «internationalization» превращается в «i18n».
Локализация, l10n, localization — процесс адаптации продукта к носителям какого-либо языка и культуры. Сюда включается перевод пользовательского интерфейса и документации, а также внесение некоторых характерных особенностей, таких, как формат даты, обозначения валюты, меры измерений и тому подобное.
кто это делает?
Локализацией в Linux занимаются различные люди. Здесь есть энтузиасты-одиночки, а есть и крупные компании, зарабатывающие распространением дистрибутивов и технической поддержкой. Поучаствовать в процессе локализации любимого продукта можете и вы — было бы желание. а как это сделать, я постараюсь рассказать ниже.
как происходит локализация?
Тут все зависит от разработчика. если он не позаботился о возможности локализации программы сам, то единственная возможность — правка исходных текстов, сборка и тестирование того, что получилось. Но, к счастью, большинство разработчиков предусматривают эту возможность и пользуются разными способами сделать приложение легко локализуемым. Наибольшее распространение приобрел пакет gettext, позволяющий менять язык программы «на лету».
что же такое gettext?
GNU gettext представляет собой пакет с набором инструментов, позволяющих вашему приложению выводить сообщения на различных языках. рассмотрим его использование по шагам.
Первым шагом является создание программы с включением в нее поддержки gettext. Все строки и надписи на элементах пользовательского интерфейса выводятся не просто так, а с вызовом функции gettext, которая занимается подстановкой переведенных строк:
int main() { /* НеВерНО – не поддерживает локализацию */ printf("Hello, World!"); /* ПраВИЛьНО – можно менять язык сообщений «на лету» */ printf(gettext("Hello, World")); return 0; }
Программисту нужно позаботиться и о тех местах программы, где возможен вывод не только в единственном числе — это связано с разным количеством множественных форм в разных языках. Например, в английском языке их две: вы можете написать «file» для одного-единственного файла и «files» для нескольких, а в русском — три, и вам надо будет писать «файл» для числительных, заканчивающихся на 1, «файла» для заканчивающихся на 2,3,4, и «файлов» для всех остальных.
Здесь на помощь приходит уже не gettext, а ngettext. Эта функция сначала проверяет числительное, и в зависимости от его значения и особенностей выбранного языка, выполняет подстановку.
Вторым шагом является создание .pot файла «Portable Object Template» (переносимый объектный шаблон) из исходных текстов программы. Этот файл представляет собой четко структурированный документ в кодировке utf-8 с сообщениями программы. копии POT-файла рассылаются переводчикам, а они переименовывают его в файл вида код_языка.po (Portable Object).
Третьим шагом является сам перевод.
Четвертым шагом является преобразование результата труда переводчика в файл машинно-ориентированного формата (GNU MO) и включение его в состав продукта.
Пятым и последним шагом является сборка программы из исходных текстов с поддержкой gettext.
После этого правильно написанная и собранная программа будет проверять переменную окружения LANG при своем запуске, и подгружать ресурсы нужного языка.
что нужно для локализации?
Многие специализированные программы могут брать на себя часть работы по переводу текста. если вы подумали о косноязычном машинном переводе – дышите глубже: речь идет о поиске идентичных частей в оригинальных сообщениях (как правило, в интерфейсе программ используется много штампов) и их автоматической замене некогда переведенными фразами. Это и называется «памятью перевода». как правило, программа помечает полученные сообщения как черновые, чтобы вы могли убедиться в правильности автоматического перевода
Желание, работающий компьютер, базовое знание английского языка и наличие свободного времени — вот в принципе и все, что вам потребуется. для более комфортной работы можете припасти специальные программы для перевода и словари. Многие добавят, что еще необходимо иметь английскую версию программы, чтобы всегда можно было понять, о чем идет речь в том или ином сообщении.
Простого текстового редактора, позволяющего работать с кодировкой utf-8, вполне достаточно, но специализированные программы вроде KBabel или gtranslate подойдут гораздо лучше. Они позволяют вести историю перевода, помечать непереведенные сообщения или черновые варианты, умеют выполнить частичный автоматический перевод (при помощи так называемой памяти перевода — см. врезку), проверять орфографию и многое другое. Существуют и онлайновые сервисы для перевода. Например, Rosetta — проект Ubuntu.
При работе над переводом крайне желательно иметь под рукой англо-русский словарь. бумажный или электронный — не важно, но поиск в электронном зачастую осуществляется быстрее. В мире Linux популярны словарь Мюллера mova и StartDict, также достоин внимания набирающий силу специализированный компьютерный словарь EngCom.
для проверки орфографии можно пользоваться Ispell или Aspell.
немного о специализированных программах
давайте рассмотрим превосходный пакет KBabel. входящий в состав kdesdk. В него входят три программы: сам редактор KBabel, менеджер каталогов Catalog Manager и словарь.
редактор KBabel — чрезвычайно удобная программа. В ней есть функции поиска (с поддержкой регулярных выражений), автоматического чернового перевода, отображения различий в разных версиях перевода, проверки орфографии и многое другое.
В верхнем левом углу отображается оригинальный текст. Под ним расположено поле перевода. для удобства в него можно скопировать оригинал. В тексте сообщения можно ставить пометки о том, что это черновой перевод или непереведенное сообщение. KBabel позволяет легко переходить от одного непереведенного сообщения к другому, минуя уже переведенные — кнопки для такой навигации вынесены на панель. Это относится и к черновому переводу, что очень удобно.
В верхнем правом углу мы видим комментарий к записи, часто в нем указывается место в исходных текстах, откуда она взято. Встретив непонятное сообщение, можно попробовать заглянуть в текст программы и посмотреть, что именно имел в виду ее автор.
Поле в нижнем правом углу имеет несколько вкладок: «Поиск», «Контекст перевода», «Символы», «Теги» и «Исходники». На вкладке «Поиск» отображается результат последнего поиска, а вкладка «Контекст» показывает четыре предыдущих и четыре последующих сообщения. Это очень полезно, так как зачастую эти сообщения связаны между собой по смыслу.
работа с программой довольна проста. для начала можно выполнить автоматический черновой перевод. Переведенные записи KBabel помечает как черновые, то есть требующие вмешательства человека. Затем идет правка чернового и ручной перевод. И последним этапом выполняются различные проверки: орфографии, синтаксиса PO-файла, правильности заполнения аргументов функций, клавиатурных комбинаций и так далее.
что нужно переводить?
Выбор очень широк. Не забывайте, что требуется не только перевод с нуля, но и обновление уже существующих переводов. Посоветовать что-то конкретное не могу — выбирайте сами. Может быть, есть область, которая вас интересует больше других и в которой вы лучше разбираетесь. Чем профессиональней будет перевод, тем больше пользователям понравится программа. Вряд ли социолог хорошо переведет интерфейс и документацию к пакету обработки аудио, и наоборот.
Советуем вам посмотреть следующие ресурсы:
- http://kde.ru
- http://l10n.lrn.ru
- руководство “GNU gettext”
- руководство “KBabel”
Перечислю вкратце места, где можно поискать программы, требующие локализации:
- http://sourceforge.net/people - загляните в раздел Translators. Наверняка найдете себе что-нибудь по душе.
- http://nongnu.org - несколько вялый сайт, но их проектам тоже нужны переводчики.
- http://www.kde.ru - страница русской команды локализации KDE. Очень заинтересованы в притоке новых сил. есть хороший список рассылки.
- http://gnome.org.ru - страница русской команды локализации Gnome.
Пара слов напоследок
Старайтесь переводить кратко, чтобы интерфейс не «разбухал». Любите русский язык и старайтесь тщательно следовать его нормам. По возможности, используйте букву «Ё», помните, что русифицированную версию могут использовать изучающие русский язык.
Присоединяйтесь!