# Руководство &lokalize;

Nick Shaforostoff

    shaforostoff@kde.ru

Николай Шафоростов

    shaforostoff@kde.ru

Перевод на русский
2007-2009 Nick Shaforostoff
&FDLNotice;
9 мая 2009 г.
1.0

&lokalize; — это ассистент переводчика (computer-aided translation system), ставящий главной целью качество и максимальную автоматизацию работы переводчика и редактора для получения наилучшего качества перевода. В &lokalize; имеются стандартные для систем автоматизированного перевода компоненты: память переводов, глоссарий, а также уникальная функция объединения (синхронизации) переводов. &lokalize; предназначен прежде всего для перевода интерфейса программного обеспечения, но также интегрирует в себя внешние фильтры форматов для перевода офисных документов.

&lokalize; локализация l10n интернационализация i18n перевод глобализация g11n XLIFF gettext OpenDocument KBabel

## Введение

При первом запуске &lokalize; (без каких-либо ключей командной строки) показывается пустой Обзор проекта. Организация процесса перевода с &lokalize; подразумевает, что работа с ним начинается с создания или открытия существующего проекта.

Если вы фрилансер, скорее всего вам нужно будет переводить офисные документы OpenDocument. Для этого вызовите Проект Создать новый проект. Укажите в появившемся мастере исходный документ, его язык и язык, на который вы будете его переводить. На основе документа будет создан файл переводов в формате XLIFF, а также проект для него. Получить переведенный файл OpenDocument можно будет вызовом Сервис Сгенерировать ODF.

Если вы переводите KDE, то скорее всего у вас уже будет файл проекта &lokalize; в папке с переводами на ваш язык (обычно называется`index.lokalize`). В противном случае вызовите Проект Создать новый проект и мастер новых проектов загрузит файлы переводов для вашего языка и создаст проект для них.

Файлы переводов открываются в отдельных вкладках. На каждой такой вкладке показываются два больших текстовых поля и несколько вспомогательных окон по краям экрана. Последние можно перемещать из одной стороны в другую, «складывать» одно на другое, образовывая вкладки, или скрывать вообще. Файл перевода состоит из пар оригинал-перевод, называемых также сегментами. Сегмент может отвечать отдельному сообщению в интерфейсе пользователя или одному абзацу в документации. Соответственно назначение упомянутых выше текстовых полей — отображение оригинала и перевода текущего сообщения. Переходить от одного сегмента к другому можно нажатием клавиш Page Down / Page Up или через вспомогательную панель Сегменты.

Мы рекомендуем вам как можно раньше приучиться вызывать наиболее часто используемые действия с клавиатуры, а не мышью, т.к. это повысит вашу продуктивность. Например, нажимайте &Ctrl;L для перехода на строку Быстрый поиск... панели Сегменты. После ввода слова для фильтрации нажмите Page Down для переключения на первый сегмент в отфильтрованном списке.

Перевод сегмента может быть пустым или не пустым. Непустой перевод может быть утверждённым или не утверждённым (готовым или не готовым). В последнем случае он показывается курсивом. &lokalize; позволяет быстро переходить по сегментам основываясь на их статусе. См. меню Переход. В рамках навигации сегменты с пустым переводом считаются неготовыми. Также вы можете воспользоваться фильтрацией панели Сегменты. Нажатие Page Down на самом деле приводит к переходу к следующему сегменту в списке, причём список может быть предварительно отсортирован и/или отфильтрован.

При работе с файлами перевода в формате XLIFF (например, припереводе документов OpenDocument), также доступны дополнительные состояния(новый, требует проверки, утверждено и т.д.). Выбрать такое состояние для текущего сегмента можно в выпадающем меню кнопки Готово. Классификация сегмента как готового или не готового зависит от текущей фазы (перевод, проверка, утверждение). Фаза, создаваемая (используемая) по умолчанию, зависит от вашей роли в проекте (задаётся в параметрах проекта). Каждый сегмент обычно содержит информацию о фазе, в которой он был изменён в последний раз, и для каждой фазы записывается её владелец (т.е. автор изменений).

## Проекты

Проект — одно из центральных понятий &lokalize;. Проект определяется файлом, содержащим путь к папке с файлами переводов, шаблонами («файлами без переводов»), имена файлов глоссария, сценариев и другую информацию. Если при открытии файла в &lokalize; ещё нет загруженного проекта, то будет выполнен поиск файла проекта в папке файла перевода, а также в папках стоящих выше в иерархии в ближайших четырёх уровнях. Файл проекта можно указать и явно, через ключ командной строки `--project`.

Для каждого проекта указывается ваша роль в нём (переводчик, проверяющий, утверждающий), что, в свою очередь, влияет на фазу автоматически выбираемую для файлов, редактируемых вами.

В отличие от файлов проекта, глоссария и сценариев, память перевода создаётся индивидуально на каждом компьютере и не публикуется в общем репозитории в случае, если над проектом работают несколько человек (пример - перевод среды KDE). Памяти переводов хранятся в домашней папке пользователя. Для каждого проекта создаётся отдельная память переводов, но поиск осуществляется во всех памятях.

### Вкладка «Обзор проекта»

На вкладке Обзор проекта отображается дерево файлов перевода для текущего проекта со статистикой и другими метаданными. При щелчке на файле он открывается в новой вкладке.

## Глоссарий

Бывало ли такое, что вам приходилось набирать одинаковые фразы по нескольку раз только потому что на поиск уже набранного перевода ушло бы столько же времени, сколько и на набор с нуля? Теперь такие фразы можно добавить в глоссарий и они будут автоматически предлагаться в соответствующей панели.

Естественно, если у вас ещё нет готового глоссария, его придётся наполнять вручную (это можно делать постепенно, при встрече частых фраз - для этого вызывайте контекстное меню панели «Глоссарий»). В &lokalize; также есть удобный редактор глоссария с поиском.

Панель «Глоссарий» внизу справа показывает переводы терминов имеющихся в оригинале
Панель «Глоссарий» внизу справа показывает переводы терминов имеющихся в оригинале

## Память переводов

Вкладка Память переводов отображает пары оригинал-перевод с оригиналом наиболее схожим с текущим. Быстрая вставка варианта перевода возможна нажатием &Ctrl;1, &Ctrl;2 и т.д., в зависимости от номера варианта. Для её наполнения можно перенести переведённые файлы на панель Память переводов, например, из Dolphin. Сканирование файлов происходит в фоновом режиме и уже через несколько минут вы сможете использовать память переводов.

Нажатие F7 открывает вкладкуПамять переводов, позволяющую свободно искать записи в ПП. Щелчок на записи в результатах запроса открывает файл, содержащий его. Так, если вы хотите быстро открыть некоторый файл, зная его название, и он проиндексирован в памяти переводов, то вместо поисков его в Обзоре проекта просто введите часть его имени в поле Маска для файлов (символы «*» будут добавлены автоматически).

В память переводов заносятся все сегменты из индексируемых файлов переводов — в том числе и сегменты без перевода и сегменты со статусом «не готов». Это позволяет выполнять поиск по всем файлам простым запросом к базе данных, вместо поочерёдного открытия всех файлов (т.е. происходит намного быстрее).

&lokalize; с результатами поиска в памяти переводов для текущего сегмента
&lokalize; с результатами поиска в памяти переводов для текущего сегмента

## Синхронизация переводов

Режим синхронизации позволяет сэкономить время редакторам при слиянии переводов присланных переводчиками (особенно, когда нельзя быть уверенным в качестве работы) и в случаях когда над файлом работает несколько человек. Часто переводчикам приходится работать над переводом сразу нескольких ветвей программного обеспечения. Панель Синхронизация 2 может использоваться для автоматической синхронизации переводов в одной из веток (например, стабильной), при работе над другой (экспериментальной). Подробнее об этом ниже.

&lokalize; позволяет быстро переходить к ближайшему следующему или предыдущему сообщению, перевод которого различается в синхронизируемых файлах. Различия показываются наглядно с подсветкой.

После копирования перевода из вспомогательного файла (синхронизации) все последующие изменения в перевод записываются в оба файла.

### Слияние

Одно из применений режима синхронизации - рецензия изменений сделанных (новыми) переводчиками.

Откройте базовый (старый, он же будет конечным) файл, затем перенесите его модифицированную версию на панель Синхронизация 1 (это можно также сделать через меню), после чего нажимайте &Alt;Down и &Alt; Up (комбинации клавиш можно перенастроить обычным для программ &kde; способом) для прохода по изменённым сообщениям.

Слияние переводов с помощью &lokalize;
Слияние переводов с помощью &lokalize;

### Репликация

Режим синхронизации также может использоваться для репликации изменений в переводы разных веток ПО. Установите параметр Ветка в свойствах проекта в путь к переводам вторичной ветки и панель Синхронизация 2 будет автоматически открывать файлы из ветки, и каждое из изменений в основной ветке будет автоматически переноситься во вторичную (естественно, если сообщение с таким оригиналом имеется во вторичной ветке).

Например, если вы работаете над переводом KDE вы можете загрузить переводы trunk в `/home/xx/hacking/kde/trunk/l10n-kde4/ВАШ_ЯЗЫК` и переводы стабильной ветки в `/home/xx/hacking/kde/branches/stable/l10n-kde4/ВАШ_ЯЗЫК`. Создайте проект &lokalize;: `/home/xx/hacking/kde/trunk/l10n-kde4/ВАШ_ЯЗЫК/project.lokalize` и задайте `BranchDir=../../../branches/stable/l10n-kde4/ВАШ_ЯЗЫК`, затем работайте с основной веткой и не забывайте публиковать в репозиторий изменения для обоих веток.

### Альтернативные версии

С сегментом могут быть связаны альтернативные версии переводов. Они могут появляться при синхронизации (обновлении) файла переводов с новым оригиналом. Если сегмент изменяется в деталях (например, добавляется точка), старый перевод делается альтернативным для нового оригинала. Также механизм альтернативных версий может использоваться для хранения истории правок по фазам перевода.

При обновлении оригинала перевод утрачивает актуальность, но если изменения небольшие (в т.ч. несемантические), то вместо того чтобы переводить изменённые части текста заново, можно просто применить к переводу изменения аналогичные изменениям в оригинале. Сообщение с изменившимся оригиналом отмечается как черновое (также называемое неподтверждённым), а старая версия оригинала помещается в файл переводов. &lokalize; наглядно показывает различия между старым и новым оригиналом в панели Альтернативные версии.

&lokalize; наглядно показывает изменения сделанные в оригинале со времени последнего перевода
&lokalize; наглядно показывает изменения сделанные в оригинале со времени последнего перевода

## Расширение &lokalize;

&lokalize; расширяется посредством сценариев на языках высокого уровня, прежде всего Python и JavaScript. Сценарии внедряются в интерфейс в качестве пунктов меню (для которых, кстати, можно задать комбинацию клавиш). Расположение и текст пункта меню указывается в сопутствующем файле-описании (с расширением .rc). При каждом открытии проекта &lokalize; сканирует папку `ПАПКА_ПРОЕКТА/lokalize-scripts` на предмет файлов .rc и добавляет информацию из них в общий кэш-файл `ПАПКА_ПРОЕКТА/lokalize-scripts/scripts.rc` (этот файл не должен добавляться в общий репозиторий системы управления версиями). В RC-файлах также указывается путь к сценарию, он может быть относительным, и в этом случае поиск сценария осуществляется в каталоге файла .rc и в системном каталоге сценариев. Пути должны быть относительными, если сценарии добавляются в общий репозиторий проекта). Так, в случае работы над переводами KDE, вы можете указать путь `../../scripts/lokalize/opensrc.py` для подключения сценария из глобальной папки сценариев kde4-l10n (т.е. не специфичный для вашего языка).

Примеры файлов .rc можно найти в установочной папке &lokalize; (обычно это`/usr/share/kde4/apps/lokalize/scripts/`) и в репозитории KDE. Здесь также можно найти пример сценария на JavaScript, `check-gui.js`, который выполняется автоматически при каждом сохранении файла (это достигается специальным кодов в файле .rc). Если вы знакомы с Python или JavaScript, код должен быть очевидным для вас.

Далее следуют ссылки на описание программных интерфейсов Lokalize. Все методы и сигналы, отмеченные как Q_SCRIPTABLE, доступны из сценариев.

- Описание интерфейса объекта Editor

- Описание интерфейса объекта Lokalize

- Описание интерфейса объекта Project

## Авторские права и лицензия

&lokalize;

Программа © 2007-2009, Николай Шафоростов shaforostoff@kde.ru

Части кода были взяты из &kbabel;, предшественника &lokalize;.

Документация © 2007-2009 Николай Шафоростов shaforostoff@kde.ru

Автор:

- Николай Шафоростов shaforostoff AT kde.ru

Домашняя страница &lokalize;.

Перевод: Николай Шафоростовshaforostoff@kde.ru

&underFDL; &underGPL;
&documentation.index;