Как переводить программы на русский?
Лекцию читает Андрей Черепанов, ведущий координатор перевода [kde.org KDE] на русский язык.
Интернационализация — адаптация ПО к потребностям определённой социальной группы.
Интернационализация (internationalization, i..................n, i18n) — это отнюдь не только замена английских слов русскими. С одной стороны, сама прогармма должна быть готова к переводу, с другой — в процессе перевода следует учитывать культурные различия.
Локаль — набор переменных окружения, указывающие культурные и языковые предпочтения.
Представляется в виде «язык_страна.кодировка». Например, ru_RU, в соответствие с ISO 3166, обозначает русский язык, Россия.
Сам процесс адаптации ПО состоит из двух частей:
Глобализация — подготовка к международному использованию. Глобализованная программа должна позволять работать с любыми языками и системами письма.
Локализация (localization, l..........n, l10n) — перевод и адаптация непрограммной части ПО к языковым и культурным особенностям аудитории.
Глобализация позволяет производить локализацию без изменения исходного кода и распараллеливать разработку.
Что необходимо локализовать
- Текстовые элементы программ
- Размещение интерфейсных элементов (в зависимости от объёма текста)
- Звуки
- Графические обозначения
- Использование культуно-нейтральных обозначений
- Комбинации клавиш. Для иероглифного письма вызывает проблемы
- Шрифты. Главная проблема: недостаток начертаний в свободных шрифтах (например, транскрипция)
- Документация
- Шаблоны документов (учесть культурные различия и госстандарт), сопутствующие материалы
Осуществлять перевод текстовой информации гораздо проще, чем графические и звуковые объекты.
Инструментарий i18n
Gettext
(ALT Linux: пакет gettext-tools)
- Глобализация:
Все сообщения на исходном языке превращаются в вызовы gettext(«сообщение») (для краткости — _(«сообщение»)).
«сообщение» — это ключ поиска в каталоге переведённых сообщений
утилита: xgettext — создание шаблонного (.pot) каталога сообщений для последующего перевода (переводы пустые)
- Локализация
Редакторы текстовой (.po) версии каталога сообщений: KBabel, GTranslator, poEdit
- Возможность «чернового» перевода
Поддержка множественных форм (1 слон, 3 слона, 5 слонов)
- Импорт старой версии перевода при обновлении (msgmerge): если сообщение не совпадает со старым, н опохоже на него, соотв. перевод помечается как черновой
- Переведённый каталог отсылается разработчику
При сборке он компилируется и помещается в файл /usr/share/locale/язык/LC_MESSAGES/имя_программы.mo (или LC_что-ниюудь другое, если локализованы не сообщения)
- Если перевод пустой или черновой, выводится исходное сообщение
Не Gettext
OpenOffice.org — «ресурсы» (как в старом windows): все сообщения нахзодятся в отдельном файле, ключом является идентификатор в тексте
- Mozilla — сообщения на любом языке лежат в отдельном файле (внутри jar), для XUL ключом является идентификатор
- Qt — своя ветка gettext
- Windows — сообщения хранятся в разделяемых библиотеках
Сетевые проекты
PO-based Online Translation / Localization Engine (Pootle) -- универсальный (OOo, Mozilla, ...)
Kartouche — в рамках KDE
- Roseta — в рамках Ubuntu (несвободная!)
Документация и терминология
KDE: docbook + экспорт/импорт фрагментов минимально размеченного текста в po-файл
Man, Info, ... — нет инструментов
Общая терминология — словарь engcom
Единая типографика — пока только отдельные проблески (кавычки-«ёлочки»).
Сообщество
- Руководитель, отвечает за координацию
- Кординатор пакета, имеют доступ на запись в репозиторий, проверяют переводы
- Ответственные за работу с новичками
- Добровольцы
Костяк сам остаётся на протяжени нескольких лет. В КДЕ порядка 10 человек со страны.
Проверять перевод сложнее, чем делать его с нуля.
На первых местах по переводам Эстония (госпрограмма), Португалия.
Совершенно не обязательно знать назубок английский, нужно всего две вещи:
- Внимательность
- Хорошее знание родного языка
Что нужно, если решили помочь в локализации:
- Взять файл перевода
- Переводите и проверяете перевод
- Отправляете разработчику
- Дальше продолжать переводить
Координация действий команд русского перевода: http://l10n.lrn.ru