<?xml version="1.0" ?> <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [ <!ENTITY lokalize "Lokalize"> <!ENTITY kaider "Lokalize"> <!ENTITY kappname "Lokalize"> <!ENTITY package "kdesdk"> <!ENTITY % addindex "IGNORE"> <!ENTITY % Russian "INCLUDE"> ]> <book id="lokalize" lang="&language;"> <bookinfo> <title >Руководство &lokalize;</title> <authorgroup> <author ><firstname >Nick</firstname > <surname >Shaforostoff</surname > <affiliation ><address ><email >shaforostoff@kde.ru</email ></address ></affiliation> </author> <othercredit role="translator" ><firstname >Николай</firstname ><surname >Шафоростов</surname ><affiliation ><address ><email >shaforostoff@kde.ru</email ></address ></affiliation ><contrib >Перевод на русский</contrib ></othercredit > </authorgroup> <copyright> <year >2007-2009</year ><holder >Nick Shaforostoff</holder> </copyright> <legalnotice >&FDLNotice;</legalnotice> <date >9 мая 2009 г.</date> <releaseinfo >1.0</releaseinfo> <abstract> <para >&lokalize; — это ассистент переводчика (computer-aided translation system), ставящий главной целью качество и максимальную автоматизацию работы переводчика и редактора для получения наилучшего качества перевода. В &lokalize; имеются стандартные для систем автоматизированного перевода компоненты: память переводов, глоссарий, а также уникальная функция объединения (синхронизации) переводов. &lokalize; предназначен прежде всего для перевода интерфейса программного обеспечения, но также интегрирует в себя внешние фильтры форматов для перевода офисных документов. </para> </abstract> <keywordset> <keyword >&lokalize;</keyword> <keyword >локализация</keyword> <keyword >l10n</keyword> <keyword >интернационализация</keyword> <keyword >i18n</keyword> <keyword >перевод</keyword> <keyword >глобализация</keyword> <keyword >g11n</keyword> <keyword >XLIFF</keyword> <keyword >gettext</keyword> <keyword >OpenDocument</keyword> <keyword >KBabel</keyword> </keywordset> </bookinfo> <chapter id="introduction"> <title >Введение</title> <para >При первом запуске &lokalize; (без каких-либо ключей командной строки) показывается пустой <guilabel >Обзор проекта</guilabel >. Организация процесса перевода с &lokalize; подразумевает, что работа с ним начинается с создания или открытия существующего проекта. </para> <para >Если вы фрилансер, скорее всего вам нужно будет переводить офисные документы OpenDocument. Для этого вызовите <menuchoice ><guimenu >Проект</guimenu ><guimenuitem >Создать новый проект</guimenuitem ></menuchoice >. Укажите в появившемся мастере исходный документ, его язык и язык, на который вы будете его переводить. На основе документа будет создан файл переводов в формате XLIFF, а также проект для него. Получить переведенный файл OpenDocument можно будет вызовом <menuchoice ><guimenu >Сервис</guimenu ><guimenuitem >Сгенерировать ODF</guimenuitem ></menuchoice >. </para> <para >Если вы переводите KDE, то скорее всего у вас уже будет файл проекта &lokalize; в папке с переводами на ваш язык (обычно называется<filename >index.lokalize</filename >). В противном случае вызовите <menuchoice ><guimenu >Проект</guimenu > <guimenuitem >Создать новый проект</guimenuitem ></menuchoice > и мастер новых проектов загрузит файлы переводов для вашего языка и создаст проект для них. </para> <para >Файлы переводов открываются в отдельных вкладках. На каждой такой вкладке показываются два больших текстовых поля и несколько <emphasis >вспомогательных окон</emphasis > по краям экрана. Последние можно перемещать из одной стороны в другую, «складывать» одно на другое, образовывая вкладки, или скрывать вообще. Файл перевода состоит из пар оригинал-перевод, называемых также <emphasis >сегментами</emphasis >. <emphasis >Сегмент</emphasis > может отвечать отдельному сообщению в интерфейсе пользователя или одному абзацу в документации. Соответственно назначение упомянутых выше текстовых полей — отображение оригинала и перевода текущего сообщения. Переходить от одного сегмента к другому можно нажатием клавиш <keycap >Page Down</keycap > / <keycap >Page Up</keycap > или через вспомогательную панель <guilabel >Сегменты</guilabel >. </para> <tip> <para >Мы рекомендуем вам как можно раньше приучиться вызывать наиболее часто используемые действия с клавиатуры, а не мышью, т.к. это повысит вашу продуктивность. Например, нажимайте <keycombo >&Ctrl;<keycap >L</keycap ></keycombo > для перехода на строку <guilabel >Быстрый поиск...</guilabel > панели <guilabel >Сегменты</guilabel >. После ввода слова для фильтрации нажмите <keycap >Page Down</keycap > для переключения на первый сегмент в отфильтрованном списке. </para> </tip> <para >Перевод сегмента может быть <emphasis >пустым</emphasis > или <emphasis >не пустым</emphasis >. Непустой перевод может быть <emphasis >утверждённым</emphasis > или <emphasis >не утверждённым</emphasis > (<emphasis >готовым</emphasis > или <emphasis >не готовым</emphasis >). В последнем случае он показывается курсивом. &lokalize; позволяет быстро переходить по сегментам основываясь на их статусе. См. меню <guilabel >Переход</guilabel >. В рамках навигации сегменты с пустым переводом считаются неготовыми. Также вы можете воспользоваться фильтрацией панели <guilabel >Сегменты</guilabel >. Нажатие <keycap >Page Down</keycap > на самом деле приводит к переходу к следующему сегменту в списке, причём список может быть предварительно отсортирован и/или отфильтрован. </para> <para >При работе с файлами перевода в формате XLIFF (например, припереводе документов OpenDocument), также доступны дополнительные состояния(<emphasis >новый</emphasis >, <emphasis >требует проверки</emphasis >, <emphasis >утверждено</emphasis > и т.д.). Выбрать такое состояние для текущего сегмента можно в выпадающем меню кнопки <guilabel >Готово</guilabel >. Классификация сегмента как <emphasis >готового</emphasis > или <emphasis >не готового</emphasis > зависит от текущей <emphasis >фазы</emphasis > (<emphasis >перевод</emphasis >, <emphasis >проверка</emphasis >, <emphasis >утверждение</emphasis >). Фаза, создаваемая (используемая) по умолчанию, зависит от вашей <emphasis >роли</emphasis > в проекте (задаётся в параметрах проекта). Каждый сегмент обычно содержит информацию о фазе, в которой он был изменён в последний раз, и для каждой фазы записывается её владелец (т.е. автор изменений). </para> </chapter> <chapter id="projects"> <title >Проекты</title> <para >Проект — одно из центральных понятий &lokalize;. Проект определяется файлом, содержащим путь к папке с файлами переводов, шаблонами («файлами без переводов»), имена файлов глоссария, сценариев и другую информацию. Если при открытии файла в &lokalize; ещё нет загруженного проекта, то будет выполнен поиск файла проекта в папке файла перевода, а также в папках стоящих выше в иерархии в ближайших четырёх уровнях. Файл проекта можно указать и явно, через ключ командной строки <userinput >--project</userinput >. </para> <para >Для каждого проекта указывается ваша роль в нём (<emphasis >переводчик</emphasis >, <emphasis >проверяющий</emphasis >, <emphasis >утверждающий</emphasis >), что, в свою очередь, влияет на фазу автоматически выбираемую для файлов, редактируемых вами. </para> <note> <para >В отличие от файлов проекта, глоссария и сценариев, память перевода создаётся индивидуально на каждом компьютере и не публикуется в общем репозитории в случае, если над проектом работают несколько человек (пример - перевод среды KDE). Памяти переводов хранятся в домашней папке пользователя. Для каждого проекта создаётся отдельная память переводов, но поиск осуществляется во всех памятях. </para> </note> <sect1 id="project-view"> <title >Вкладка «Обзор проекта»</title> <para >На вкладке <guilabel >Обзор проекта</guilabel > отображается дерево файлов перевода для текущего проекта со статистикой и другими метаданными. При щелчке на файле он открывается в новой вкладке. </para> </sect1> </chapter> <chapter id="glossary"> <title >Глоссарий</title> <para >Бывало ли такое, что вам приходилось набирать одинаковые фразы по нескольку раз только потому что на поиск уже набранного перевода ушло бы столько же времени, сколько и на набор с нуля? Теперь такие фразы можно добавить в глоссарий и они будут автоматически предлагаться в соответствующей панели. </para> <para >Естественно, если у вас ещё нет готового глоссария, его придётся наполнять вручную (это можно делать постепенно, при встрече частых фраз - для этого вызывайте контекстное меню панели «Глоссарий»). В &lokalize; также есть удобный редактор глоссария с поиском. </para> <screenshot> <screeninfo >Панель «Глоссарий» внизу справа показывает переводы терминов имеющихся в оригинале</screeninfo> <mediaobject> <imageobject> <imagedata fileref="glossary.png" format="PNG"/> </imageobject> <textobject> <phrase >Панель «Глоссарий» внизу справа показывает переводы терминов имеющихся в оригинале</phrase> </textobject> </mediaobject> </screenshot> </chapter> <chapter id="tm"> <title >Память переводов</title> <para >Вкладка <guilabel >Память переводов</guilabel > отображает пары оригинал-перевод с оригиналом наиболее схожим с текущим. Быстрая вставка варианта перевода возможна нажатием <keycombo >&Ctrl;<keycap >1</keycap ></keycombo >, <keycombo >&Ctrl;<keycap >2</keycap ></keycombo > и т.д., в зависимости от номера варианта. Для её наполнения можно перенести переведённые файлы на панель <guilabel >Память переводов</guilabel >, например, из Dolphin. Сканирование файлов происходит в фоновом режиме и уже через несколько минут вы сможете использовать память переводов. </para> <para >Нажатие <keycombo ><keycap >F7</keycap ></keycombo > открывает вкладку<guilabel >Память переводов</guilabel >, позволяющую свободно искать записи в ПП. Щелчок на записи в результатах запроса открывает файл, содержащий его. Так, если вы хотите быстро открыть некоторый файл, зная его название, и он проиндексирован в памяти переводов, то вместо поисков его в <guilabel >Обзоре проекта</guilabel > просто введите часть его имени в поле <guilabel >Маска для файлов</guilabel > (символы «*» будут добавлены автоматически). </para> <para >В память переводов заносятся все сегменты из индексируемых файлов переводов — в том числе и сегменты без перевода и сегменты со статусом «не готов». Это позволяет выполнять поиск по всем файлам простым запросом к базе данных, вместо поочерёдного открытия всех файлов (т.е. происходит намного быстрее). </para> <screenshot> <screeninfo >&lokalize; с результатами поиска в памяти переводов для текущего сегмента</screeninfo> <mediaobject> <imageobject> <imagedata fileref="tmview.png" format="PNG"/> </imageobject> <textobject> <phrase >&lokalize; с результатами поиска в памяти переводов для текущего сегмента</phrase> </textobject> </mediaobject> </screenshot> </chapter> <chapter id="sync"> <title >Синхронизация переводов</title> <para ><guilabel >Режим синхронизации</guilabel > позволяет сэкономить время редакторам при слиянии переводов присланных переводчиками (особенно, когда нельзя быть уверенным в качестве работы) и в случаях когда над файлом работает несколько человек. Часто переводчикам приходится работать над переводом сразу нескольких ветвей программного обеспечения. Панель <guilabel >Синхронизация 2</guilabel > может использоваться для автоматической синхронизации переводов в одной из веток (например, стабильной), при работе над другой (экспериментальной). Подробнее об этом ниже. </para> <para >&lokalize; позволяет быстро переходить к ближайшему следующему или предыдущему сообщению, перевод которого различается в синхронизируемых файлах. Различия показываются наглядно с подсветкой. </para> <para >После копирования перевода из вспомогательного файла (<emphasis >синхронизации</emphasis >) все последующие изменения в перевод записываются в оба файла. </para> <sect1 id="file-merge"> <title >Слияние</title> <para >Одно из применений <guilabel >режима синхронизации</guilabel > - рецензия изменений сделанных (новыми) переводчиками. </para> <para >Откройте базовый (старый, он же будет конечным) файл, затем перенесите его модифицированную версию на панель <guilabel >Синхронизация 1</guilabel > (это можно также сделать через меню), после чего нажимайте <keycombo >&Alt;<keycap >Down</keycap ></keycombo > и <keycombo >&Alt; <keycap >Up</keycap ></keycombo > (комбинации клавиш можно перенастроить обычным для программ &kde; способом) для прохода по изменённым сообщениям. </para> <screenshot> <screeninfo >Слияние переводов с помощью &lokalize;</screeninfo> <mediaobject> <imageobject> <imagedata fileref="sync.png" format="PNG"/> </imageobject> <textobject> <phrase >Слияние переводов с помощью &lokalize;</phrase> </textobject> </mediaobject> </screenshot> </sect1> <sect1 id="file-sync"> <title >Репликация</title> <para ><guilabel >Режим синхронизации</guilabel > также может использоваться для репликации изменений в переводы разных веток ПО. Установите параметр <guilabel >Ветка</guilabel > в свойствах проекта в путь к переводам вторичной ветки и панель <guilabel >Синхронизация 2</guilabel > будет автоматически открывать файлы из ветки, и каждое из изменений в основной ветке будет автоматически переноситься во вторичную (естественно, если сообщение с таким оригиналом имеется во вторичной ветке). </para> <para >Например, если вы работаете над переводом KDE вы можете загрузить переводы trunk в <filename class="directory" >/home/xx/hacking/kde/trunk/l10n-kde4/ВАШ_ЯЗЫК</filename > и переводы стабильной ветки в <filename class="directory" >/home/xx/hacking/kde/branches/stable/l10n-kde4/ВАШ_ЯЗЫК</filename >. Создайте проект &lokalize;: <filename >/home/xx/hacking/kde/trunk/l10n-kde4/ВАШ_ЯЗЫК/project.lokalize</filename > и задайте <filename class="directory" >BranchDir=../../../branches/stable/l10n-kde4/ВАШ_ЯЗЫК</filename >, затем работайте с основной веткой и не забывайте публиковать в репозиторий изменения для обоих веток. </para> </sect1> <sect1 id="alt-trans"> <title >Альтернативные версии</title> <para >С сегментом могут быть связаны <emphasis >альтернативные версии переводов</emphasis >. Они могут появляться при синхронизации (обновлении) файла переводов с новым оригиналом. Если сегмент изменяется в деталях (например, добавляется точка), старый перевод делается альтернативным для нового оригинала. Также механизм альтернативных версий может использоваться для хранения истории правок по фазам перевода. </para> <para >При обновлении оригинала перевод утрачивает актуальность, но если изменения небольшие (в т.ч. несемантические), то вместо того чтобы переводить изменённые части текста заново, можно просто применить к переводу изменения аналогичные изменениям в оригинале. Сообщение с изменившимся оригиналом отмечается как <emphasis >черновое</emphasis > (также называемое <emphasis >неподтверждённым</emphasis >), а старая версия оригинала помещается в файл переводов. &lokalize; наглядно показывает различия между старым и новым оригиналом в панели <guilabel >Альтернативные версии</guilabel >. </para> <screenshot> <screeninfo >&lokalize; наглядно показывает изменения сделанные в оригинале со времени последнего перевода</screeninfo> <mediaobject> <imageobject> <imagedata fileref="original-diff.png" format="PNG"/> </imageobject> <textobject> <phrase >&lokalize; наглядно показывает изменения сделанные в оригинале со времени последнего перевода</phrase> </textobject> </mediaobject> </screenshot> </sect1> </chapter> <chapter id="scripting"> <title >Расширение &lokalize;</title> <para >&lokalize; расширяется посредством сценариев на языках высокого уровня, прежде всего Python и JavaScript. Сценарии внедряются в интерфейс в качестве пунктов меню (для которых, кстати, можно задать комбинацию клавиш). Расположение и текст пункта меню указывается в сопутствующем файле-описании (с расширением .rc). При каждом открытии проекта &lokalize; сканирует папку <filename >ПАПКА_ПРОЕКТА/lokalize-scripts</filename > на предмет файлов .rc и добавляет информацию из них в общий <emphasis >кэш</emphasis >-файл <filename >ПАПКА_ПРОЕКТА/lokalize-scripts/scripts.rc</filename > (этот файл не должен добавляться в общий репозиторий системы управления версиями). В RC-файлах также указывается путь к сценарию, он может быть относительным, и в этом случае поиск сценария осуществляется в каталоге файла .rc и в системном каталоге сценариев. Пути <emphasis >должны</emphasis > быть относительными, если сценарии добавляются в общий репозиторий проекта). Так, в случае работы над переводами KDE, вы можете указать путь <filename >../../scripts/lokalize/opensrc.py</filename > для подключения сценария из <ulink url="http://websvn.kde.org/trunk/l10n-kde4/scripts/lokalize/" >глобальной папки сценариев kde4-l10n</ulink > (т.е. не специфичный для вашего языка). </para> <para >Примеры файлов .rc можно найти в установочной папке &lokalize; (обычно это<filename >/usr/share/kde4/apps/lokalize/scripts/</filename >) и в <ulink url="http://websvn.kde.org/trunk/l10n-kde4/scripts/lokalize/" >репозитории KDE</ulink >. <ulink url="http://websvn.kde.org/trunk/l10n-kde4/ru/lokalize-scripts/" >Здесь</ulink > также можно найти пример сценария на JavaScript, <filename >check-gui.js</filename >, который выполняется автоматически при каждом сохранении файла (это достигается специальным кодов в файле .rc). Если вы знакомы с Python или JavaScript, код должен быть очевидным для вас. </para> <para >Далее следуют ссылки на описание программных интерфейсов Lokalize. Все методы и сигналы, отмеченные как Q_SCRIPTABLE, доступны из сценариев. </para> <itemizedlist> <listitem> <para >Описание интерфейса объекта <ulink url="http://api.kde.org/4.x-api/kdesdk-apidocs/lokalize/html/classEditorTab.html" >Editor</ulink > </para> </listitem> <listitem> <para >Описание интерфейса объекта <ulink url="http://api.kde.org/4.x-api/kdesdk-apidocs/lokalize/html/classLokalizeMainWindow.html" >Lokalize</ulink > </para> </listitem> <listitem> <para >Описание интерфейса объекта <ulink url="http://api.kde.org/4.x-api/kdesdk-apidocs/lokalize/html/classProjectTab.html" >Project</ulink > </para> </listitem> </itemizedlist> </chapter> <chapter id="credits"> <title >Авторские права и лицензия</title> <para >&lokalize; </para> <para >Программа © 2007-2009, Николай Шафоростов <email >shaforostoff@kde.ru</email > </para> <para >Части кода были взяты из &kbabel;, предшественника &lokalize;. </para> <para >Документация © 2007-2009 Николай Шафоростов <email >shaforostoff@kde.ru</email > </para> <para >Автор: <itemizedlist > <listitem > <para >Николай Шафоростов <email >shaforostoff AT kde.ru</email > </para> </listitem> </itemizedlist> </para> <para ><ulink url="http://userbase.kde.org/lokalize" >Домашняя страница &lokalize;</ulink >.</para> <para >Перевод: Николай Шафоростов<email >shaforostoff@kde.ru</email ></para > &underFDL; &underGPL; </chapter> &documentation.index; </book> <!-- Local Variables: mode: sgml sgml-minimize-attributes:nil sgml-general-insert-case:lower sgml-indent-step:0 sgml-indent-data:nil End: // vim:ts=2:sw=2:tw=78:noet -->