RU/Работа с переводами KDE через SVN

From KDE Community Wiki
< RU
Revision as of 12:50, 19 May 2019 by Aspotashev (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Начало работы

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

Какие части репозитория могут понадобиться переводчику:

  • trunk/l10n-kf5/ru — здесь находятся русские переводы для пакетов/приложений KDE из разрабатываемой ветки (master).
  • branches/stable/l10n-kf5/ru — русские переводы для приложений KDE из стабильной ветки. Например, если в ближайшие недели ожидается новый функциональный выпуск Plasma 5.16.0, то в stable находятся переводы для 5.16.0, а в trunk — для разрабатываемого следующего функционального выпуска 5.17.x. Если у пакета/приложения есть обе ветки переводов trunk и stable, то в большинстве случаев в ближайший релиз пойдут файлы переводов из stable. Поэтому приоритетнее переводить те строки, которые ещё не переведены в stable.

Используя только эти два каталога, уже вполне можно работать над переводами KDE. Однако, и другие каталоги могут быть очень полезны:

  • trunk/l10n-kf5/scripts — скрипты, имеющие отношение к локализации KDE. В подкаталоге lokalize находятся некоторые сценарии для Lokalize, среди них сценарий opensrc (он служит для открытия файлов исходного кода из Lokalize).
  • trunk/l10n-kf5/templates и branches/stable/l10n-kf5/templates — шаблоны переводов (файлы .pot). Они бывают полезны, если нужно запустить merge_all.sh или msgmerge. Кроме того, при наличии этих шаблонов, Lokalize будет показывать их на вкладке "Обзор проекта", что позволит одним щелчком мыши начать перевод полностью непереведённого файла. Однако, не надо забывать о том, что русские переводы KDE перешли на 4 формы множественного числа, а Lokalize при создании файла перевода будет по-прежнему использовать 3 формы множественного числа.
  • trunk/l10n-kf5/documentaton и branches/stable/l10n-kf5/documentaton — оригинал документации на английском языке в формате DocBook. Используется для обновления русской документации, которая находится в каталоге trunk/l10n-kf5/ru/docs (branches/stable/l10n-kf5/ru/docs для стабильной ветки).
  • trunk/l10n-support — вспомогательный каталог для работы над локализацией. Русской командой KDE он пока не используется, но именно в нём находится Pology.
  • https://cgit.kde.org/ — исходный код большинства пакетов/программ (отдельные Git-репозитории для каждого пакета).

Конфликты

Конфликты изменений возникают, когда пересекающиеся части файла изменяются одновременно в репозитории и в рабочей копии на вашем компьютере. Говоря о переводах, конфликты могут возникнуть при нескоординированной работе над одним файлом в 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-kf5.
  • Если нужно обновить всего лишь несколько файлов переводов, то нет необходимости запускать скрипт merge_all.sh. Можно воспользоваться msgmerge:
msgmerge --previous -q -o ru/messages/kdeedu/kgeography.po \
    ru/messages/kdeedu/kgeography.po templates/messages/kdeedu/kgeography.pot
  • Объединить файлы переводов при помощи Lokalize (такой способ подойдёт и в случае, если два переводчика по ошибке стали работать над одним файлов в SVN).

Ссылки