RU/Работа с исходным кодом в Lokalize

From KDE Community Wiki

Зачем?

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

Настройка Lokalize

Для того чтобы использовать какой-либо сценарий в Lokalize, в файле l10n-kde4/ru/lokalize-scripts/scripts.rc должна присутствовать ссылка на этот сценарий (в случае, если вы работаете с проектом l10n-kde4/ru/index.lokalize).

В стандартном scripts.rc находится ссылка на сценарий ../../scripts/lokalize/opensrc.py, поэтому нужно просто извлечь из репозитория SVN каталог l10n-kde4/scripts/lokalize.

Где ищутся исходники

Сценарий opensrc сначала пытается найти каталог исходного кода по заранее подготовленной таблице (файл opensrc_list.py). Файл opensrc_list.py, находящийся в репозитории SVN, содержит информацию о расположении исходных кодов всех программ из koffice, extragear, playground и KDE. Для работы с этими исходниками достаточно извлечь их из SVN в соответствующий каталог (так, чтобы сохранялась структура каталогов как в SVN).

Конечно, в случае отсутствия исходников в стандартном каталоге, Lokalize пытается найти их при помощи утилиты locate. Однако, locate работает относительно медленно, и он может найти не тот файл, который вам нужен.

Для работы с исходниками других программ, а также если вы не хотите придерживаться структуры каталогов, сложившейся в репозитории, вам нужно отредактировать файл l10n-kde4/scripts/lokalize/opensrc_list.py и перезапустить Lokalize. Можно редактировать этот файл вручную, а можно зайти в каталог l10n-kde4/scripts/lokalize и запустить сценарий opensrc_generate_list.rb , который найдёт файлы Messages.sh в каталогах исходного кода и по ним составит файл opensrc_list.py .

Пример файла opensrc_list.py:

  1. -*- coding: utf-8 -*-

mapSrc = {

   'okular': u'/home/aspotashev/kde-git/okular',
   'kdesvn': u'/home/aspotashev/kde-git/kdesvn',

}

Сценарий opensrc_generate_list

  • По умолчанию, сценарий opensrc_generate_list.rb будет сканировать каталог trunk (точнее, каталог на 3 уровня выше от каталога, в котором находится opensrc_generate_list.rb).
  • Если вы хотите просканировать весь каталог /home при помощи locate, нужно запустить
./opensrc_generate_list.rb global-home
  • Если у вас есть исходники из trunk и другие исходники, разбросанные про /home, то рекомендуется запустить
./opensrc_generate_list.rb kde-trunk global-home

тогда каталог trunk будет иметь приоритет перед другими каталогами.

Как читать исходный код

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

Среди всех переводимых строк можно выделить несколько категорий:

  • Заголовки окон. Строка является заголовком диалогового окна, в частности, если она передаётся в вызов одной из следующих функций: KInputDialog::getText (как первый аргумент), setCaption, setWindowTitle. Иногда к строке, являющейся заголовком окна, разработчики добавляют контекстную строку "@title:window".
  • Всплывающие подсказки. Строка является заголовком диалогового окна, в частности, если она передаётся в вызов функции setToolTip.