RU/Работа с исходным кодом в Lokalize
Зачем?
Автоматически созданные комментарии к строкам в шаблонах переводов не всегда дают полную информацию о строке, а иногда и вовсе отсутствуют. Поэтому при отсутствии уверенности в переводе строки рекомендуется обращаться к исходному коду переводимой программы.
Настройка Lokalize
Для того чтобы использовать какой-либо сценарий в Lokalize, в файле l10n-kf5/ru/lokalize-scripts/scripts.rc должна присутствовать ссылка на этот сценарий (в случае, если вы работаете с проектом l10n-kf5/ru/index.lokalize).
В стандартном scripts.rc находится ссылка на сценарий ../../scripts/lokalize/opensrc.py, поэтому нужно просто извлечь из репозитория SVN каталог l10n-kf5/scripts/lokalize.
Где ищутся исходники
Сценарий opensrc сначала пытается найти каталог исходного кода по заранее подготовленной таблице (файл opensrc_list.py). Файл opensrc_list.py, находящийся в репозитории SVN, содержит информацию о расположении исходных кодов всех программ из koffice, extragear, playground и KDE. Для работы с этими исходниками достаточно извлечь их из SVN в соответствующий каталог (так, чтобы сохранялась структура каталогов как в SVN).
Конечно, в случае отсутствия исходников в стандартном каталоге, Lokalize пытается найти их при помощи утилиты locate. Однако, locate работает относительно медленно, и он может найти не тот файл, который вам нужен.
Для работы с исходниками других программ, а также если вы не хотите придерживаться структуры каталогов, сложившейся в репозитории, вам нужно отредактировать файл l10n-kf5/scripts/lokalize/opensrc_list.py и перезапустить Lokalize. Можно редактировать этот файл вручную, а можно зайти в каталог l10n-kf5/scripts/lokalize и запустить сценарий opensrc_generate_list.rb , который найдёт файлы Messages.sh в каталогах исходного кода и по ним составит файл opensrc_list.py .
Пример файла opensrc_list.py:
# -*- 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.