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

From KDE Community Wiki
< RU

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

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

Этот раздел описывает работу с платформой KDE Frameworks 5. По мере перехода программ на Frameworks 6, может потребоваться заменить kf5 на kf6 в путях к указанным расположениям.

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

  • 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 для стабильной ветки).
  • https://invent.kde.org/ — исходный код большинства пакетов/программ (отдельные Git-репозитории для каждого пакета).
  • https://invent.kde.org/sdk/pology — исходный код Pology (инструмент для алгоритмической обработки файлов переводов .po).

Конфликты

Конфликты изменений возникают, когда пересекающиеся части файла изменяются одновременно в репозитории и в рабочей копии на вашем компьютере. Говоря о переводах, конфликты могут возникнуть при нескоординированной работе над одним файлом в 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).

Ссылки