Работа с переводами KDE через SVN
Начало работы
Перед тем как начать вносить изменения в репозиторий KDE, необходимо создать на своём компьютере рабочую копию части репозитория (если попробовать выгрузить весь репозиторий KDE, это может занять слишком много времени).
Какие части репозитория могут понадобиться переводчику:
- trunk/l10n-kde4/ru — здесь находятся русские переводы для приложений KDE из разрабатываемой ветки (trunk) и для нестабильных версий приложений, выпускающихся отдельно от KDE.
- branches/stable/l10n-kde4/ru — русские переводы для приложений KDE из стабильной ветки (с конца июня до конца декабря 2010 года это ветка 4.5) и для стабильных версий приложений, выпускающихся отдельно от KDE. На основе файлов из этого каталога собирается пакет kde-l10n-ru для большинства дистрибутивов.
Используя только эти два каталога, уже вполне можно работать над переводами KDE. Однако, и другие каталоги могут быть очень полезны:
- trunk/l10n-kde4/scripts — скрипты, имеющие отношение к локализации KDE. В подкаталоге lokalize находятся некоторые сценарии для Lokalize, среди них сценарий opensrc (он служит для открытия файлов исходного кода из Lokalize).
- trunk/l10n-kde4/templates — шаблоны переводов (файлы .pot). Они бывают полезны, если нужно запустить merge_all.sh или msgmerge. Кроме того, при наличии этих шаблонов, Lokalize будет показывать их на вкладке "Обзор проекта", что позволит одним щелчком мыши начать перевод полностью непереведённого файла. Однако, не надо забывать о том, что русские переводы KDE перешли на 4 формы множественного числа, а Lokalize при создании файла перевода будет по-прежнему использовать 3 формы множественного числа.
- branches/stable/l10n-kde4/templates — шаблоны переводов для стабильной ветки.
- trunk/l10n-kde4/documentaton и branches/stable/l10n-kde4/documentaton — оригинал документации на английском языке в формате DocBook. Используется для обновления русской документации, которая находится в каталоге trunk/l10n-kde4/ru/docs (branches/stable/l10n-kde4/ru/docs для стабильной ветки).
- trunk/l10n-support — вспомогательный каталог для работы над локализацией. Русской командой KDE он пока не используется, но именно в нём находится Pology.
- trunk/KDE — исходный код программ, входящих в состав KDE SC.
- trunk/extragear, trunk/kdereview, trunk/playground — исходный код других программ, которые переводятся русской командой KDE.
- trunk/koffice — исходный код KOffice.
Не все программы, локализация которых происходит в репозитории KDE, хранят свой исходный код в этом SVN-репозитории. Amarok и Konversation вместо SVN используют Git-репозитории:
git@git.kde.org:amarok/amarok.git (веб-страница) git@git.kde.org:konversation/konversation.git (веб-страница)
Файлы переводов из каталога trunk/l10n-kde4/ru/messages/qt относятся к переводам библиотеки Qt, на которой основаны программы KDE. Поэтому может оказаться полезным и исходный код Qt, находящийся тоже в репозитории Git:
git://gitorious.org/qt/qt.git (веб-страница)
Scripty
Конфликты
Конфликты изменений возникают, когда пересекающиеся части файла изменяются одновременно в репозитории и в рабочей копии на вашем компьютере. Говоря о переводах, конфликты могут возникнуть при нескоординированной работе над одним файлом в SVN нескольких переводчиков.
В чём выражаются конфликты: при попытке выполнения команды svn up SVN сообщает о конфликте и отказывается выполнить svn up для файла (т.е. отказывается "добавить" к изменениям в рабочей копии те изменения, которые были сделаны в репозитории с момента последнего запуска svn up).
Конфликты со scripty
Но часто конфликты возникают всего лишь из-за вмешательства сервиса обновления файлов переводов (scripty).
Например, вы решили поработать над одним из файлов перевода. Перед этим, конечно, рекомендуется запустить svn up. И вот, вы начали редактировать файл перевода, но, не успев зафиксировать изменения в репозитории, захотели спать. Ночью запустился scripty, который добавил, изменил, удалил или поменял местами строки в файле перевода. На следующий день вы запускаете svn up и обнаруживаете конфликт, потому что SVN не знает о структуре файлов переводов, и поэтому не может соотнести ваши изменения в файле с изменениями от scripty. Этот пример намекает нам на то, что лучше почаще фиксировать свои изменения в репозитории, чтобы избежать конфликтов.
Но как теперь разрешить возникший конфликт? Есть несколько возможностей:
- После запуска svn up скопировать <файл>.po.mine в <файл>.po, убрать лишние файлы и зафиксировать изменения. Таким образом, вы проигнорируете изменения от scripty и оставите только свои изменения. Следующей ночью scripty снова обновит файл перевода, и всё встанет на свои места.
- Если вы не хотите ждать следующего запуска scripty, можно выполнить ту же работу за него. Для этого нужно запустить scripts/merge_all.sh из каталога l10n-kde4.
- Если нужно обновить всего лишь несколько файлов переводов, то нет необходимости запускать скрипт merge_all.sh. Можно воспользоваться msgmerge:
msgmerge --previous -q -o ru/messages/kdeedu/kstars.po \ ru/messages/kdeedu/kstars.po templates/messages/kdeedu/kstars.pot
- Объединить файлы переводов при помощи Lokalize (такой способ подойдёт и в случае, если два переводчика по ошибке стали работать над одним файлов в SVN).