Безперервна локалізація

Готовою до використання є інфраструктура, за допомогою якої ви можете точно слідувати за розробкою проєкту. Перекладачі можуть працювати над перекладами неперервно, а не працювати над величезними обсягами перекладів нового тексту безпосередньо перед випуском.

Дивись також

У Інтеграція із Weblate описано базові способи інтеграції вашої розробки із Weblate.

Ось процедура:

  1. Розробники змінюють код і записують його до сховища системи керування версіями.

  2. Якщо потрібно, оновлюються файли перекладу (це залежить від формату файлів, див. Чому Weblate показує застарілі рядки перекладу, хоча шаблон перекладу було оновлено?).

  3. Weblate отримує зміни зі сховища системи керування версіями, див. Оновлення сховищ.

  4. Щойно Weblate виявить зміни у перекладах, перекладачів буде сповіщено, залежно від встановлених параметрів підписки на сповіщення.

  5. Перекладачі подають переклади за допомогою вебінтерфейсу Weblate або вивантажують зроблені поза інтернетом переклади.

  6. Щойно переклад буде завершено, Weblate надсилає зміни до локального сховища (див. «Ліниві» внески) і записує їх до основного сховища, якщо має право на виконання цієї дії (див. Записування змін з Weblate).

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0]; edge [fontname = "sans-serif", fontsize=10]; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> "Weblate" [label=" 3. Pull "]; "Weblate" -> "Translators" [label=" 4. Notification "]; "Translators" -> "Weblate" [label=" 5. Translate "]; "Weblate" -> "VCS repository" [label=" 6. Push "]; }

Оновлення сховищ

Вам слід налаштувати певний спосіб оновлення сховищ з початкового коду.

  • Скористайтеся Обробники сповіщень для інтеграції із більшістю типових служб зберігання коду

  • Увімкніть оновлення вручну або у керуванні сховищем, або за допомогою API або Клієнт Weblate

  • Увімкніть AUTO_UPDATE для автоматичного оновлення усіх складників у вашому екземплярі Weblate

  • Виконайте updategit (із вибором проєкту або додаванням –all для оновлення усього)

Кожного разу, коли оновлюватиме Weblate, буде увімкнено додатки остаточної обробки, див. Доповнення.

Уникання конфліктів об’єдання

Конфлікти об’єнання з даними Weblate виникають тоді, коли якийсь файл було змінено одразу у Weblate і поза ним. Існує два підходи до усування можливості конфліктів — заборона редагування поза Weblate або інтеграція Weblate до вашого процесу оновлення так, щоб зміни було отримано до оновлення файлів поза системою Weblate.

Перший підхід спрощує роботу із одномовними файлами — ви можете додавати нові рядки у Weblate і покластися на редагування файлів у вбудованому редакторі. Для двомовних файлів, зазвичай, перекладу передує певна процедура видобування рядків для створення придатних до перекладу файлів із початкового коду. У деяких випадках цей процес може бути поділено на дві частини — спочатку під час видобування створюється шаблон (наприклад, файл POT gettext створюється за допомогою xgettext), а потім, у подальшому процесі, об’єднується із поточними перекладами (файли PO gettext оновлюються за допомогою msgmerge). Ви можете виконати другий крок у Weblate, і програмні засоби забезпечать включення усіх змін у черзі до виконання цієї дії.

Другий підхід можна реалізувати за допомогою API — змусити Weblate записати усі зміни з черги і заблокувати переклад, доки ви виконуєте зміни на вашому боці.

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

# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock

Якщо у одному сховищі зберігаються дані декількох складників, вам слід заблокувати їх окремо:

wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj

Примітка

У прикладі використано програму Клієнт Weblate, яка потребує налаштовування (ключів до програмного інтерфейсу), щоб Weblate можна було керувати віддалено. Ви також можете досягти цього використанням замість wlc будь-якого клієнта HTTP, наприклад curl, див. API.

Автоматичне отримання змін з GitHub

Weblate постачається із вбудованою підтримкою GitHub.

Якщо ви користуєтеся Hosted Weblate, рекомендованим підходом є встановлення програми Weblate. У такий спосіб ви отримаєте належну конфігурацію без зайвої метушні із налаштовуванням. Нею також можна використати для записування змін назад до сховища.

Щоб отримувати сповіщення щодо кожного запису до сховища GitHub, додайте вебскрипт Weblate до параметрів сховища (Webhooks), як це показано на наведеному нижче зображенні:

../_images/github-settings.png

Щоб отримати адресу даних, допишіть /hooks/github/ до адреси сайта вашого Weblate. Наприклад, для служби Hosted Weblate це https://hosted.weblate.org/hooks/github/.

Ви можете лишити типові значення для решти параметрів (Weblate може одночасно обробляти обидва типи даних і споживатиметься лише подію push).

Автоматичне отримання змін з Bitbucket

У Weblate передбачено підтримку вебскриптів Bitbucket. Додайте вебскрипт, який вмикає запис до сховища із адресою призначення /hooks/bitbucket/ у вашому встановленому Weblate (наприклад, https://hosted.weblate.org/hooks/bitbucket/).

../_images/bitbucket-settings.png

Автоматичне отримання змін з GitLab

У Weblate передбачено підтримку скриптів GitLab. Додайте вебскрипт проєкту із адресою призначення /hooks/gitlab/ у встановленому вами Weblate (наприклад, https://hosted.weblate.org/hooks/gitlab/).

Автоматичне отримання змін з Pagure

Нове в версії 3.3.

У Weblate передбачено підтримку скриптів Pagure. Додайте вебскрипт із адресою призначення /hooks/pagure/ у встановленому вами Weblate (наприклад, https://hosted.weblate.org/hooks/pagure/). Зробити це можна за допомогою пункту Activate Web-hooks у розділі Project options:

../_images/pagure-webhook.png

Автоматичне отримання змін зі сховищ Azure

Нове в версії 3.8.

У Weblate передбачено підтримку веб скриптів сховищ Azure. Додайте вебскрипт для події Code pushed із адресою призначення /hooks/azure/ у встановленому вами Weblate (наприклад, https://hosted.weblate.org/hooks/azure/). Зробити це можна за допомогою пункту Service hooks у розділі Project settings.

Автоматичне отримання змін зі сховищ Gitea

Нове в версії 3.9.

У Weblate передбачено підтримку вебскриптів Gitea. Додайте Gitea Webhook для події Push events із адресою призначення /hooks/gitea/ у встановленому вами Weblate (наприклад, https://hosted.weblate.org/hooks/gitea/). Зробити це можна за допомогою пункту Webhooks у розділі Settings сховища.

Автоматичне отримання змін зі сховищ Gitee

Нове в версії 3.9.

У Weblate передбачено підтримку вебскриптів Gitee. Додайте WebHook для події Push із адресою призначення /hooks/gitee/ у встановленому вами Weblate (наприклад, https://hosted.weblate.org/hooks/gitee/). Зробити це можна за допомогою пункту WebHooks у розділі Management сховища.

Автоматичне щоденне оновлення сховищ

Weblate автоматично отримує вміст віддалених сховищ щодня для поліпшення швидкодії при наступному об’єднанні змін. Якщо хочете, можете перетворити це на щоденні об’єднання, увімкнувши AUTO_UPDATE.

Записування змін з Weblate

Для кожного складника перекладу може бути налаштовано адресу запису (див. Адреса для записування до сховища). Якщо таку назву налаштовано, Weblate зможе записувати зміни до віддаленого сховища. Крім того, Weblate можна налаштувати на автоматичне записування змін при кожному внеску (це типова поведінка, див. Відправляти при поданні). Якщо ви не хочете, щоб зміни записувалися автоматично, ви можете записувати їх вручну у розділі Супровід сховища або за допомогою програмного інтерфейсу: wlc push.

Параметри запису до сховища є різним для різних Налаштування інтеграції із керуванням версіями. Подробиці можна знайти у цьому розділі.

Якщо вам не потрібне безпосереднє записування до сховища від Weblate, передбачено підтримку запитів щодо об’єднання GitHub, GitLab, Pagure або рецензувань Gerrit. Ви можете активувати їх вибором GitHub, GitLab, Gerrit або Pagure як Система керування версіями у розділі Налаштовування складників.

Загалом, у Git, GitHub і GitLab можна скористатися такими параметрами:

Бажане налаштування

Система керування версіями

Адреса для записування до сховища

Гілка для запису

Без запису

Git

empty

empty

Записувати безпосередньо

Git

Адреса SSH

empty

Записувати до окремої гілки

Git

Адреса SSH

Назва гілки

Запит щодо об’єднання у GitHub з відгалуження

GitHub

empty

empty

Запит щодо об’єднання у GitHub з гілки

GitHub

SSH URL 1

Назва гілки

Запит щодо злиття на GitLab з відгалуження

GitLab

empty

empty

Запит щодо злиття на GitLab з гілки

GitLab

SSH URL 1

Назва гілки

Запит щодо злиття на Pagure з відгалуження

Pagure

empty

empty

Запит щодо злиття на Pagure з гілки

Pagure

SSH URL 1

Назва гілки

1(1,2,3)

Може бути порожнім, якщо у сховищі передбачено запис змін.

Примітка

Ви також можете увімкнути автоматичний запис змін після внесків Weblate. Зробити це можна у Відправляти при поданні.

Дивись також

Опис налаштовування ключів SSH можна знайти у розділі Доступ до сховищ. Дані щодо того, яким чином Weblate визначає потребу у внесенні змін, можна знайти у розділі «Ліниві» внески.

Захищені гілки

Якщо ви використовуєте Weblate для захищеної гілки, ви можете налаштувати його на використання запитів щодо об’єднання і увімкнути рецензування перекладів (може бути проблематичним для мов, яких ви не знаєте). Альтернативним підходом є відмова від цього обмеження для користувача Weblate, який записуватиме дані до сховища.

Наприклад, у GitHub це можна зробити у налаштуваннях сховища:

../_images/github-protected.png

Злиття чи перенесення

Типово, Weblate зливає основне сховище до власного. Цей найбезпечніший спосіб, якщо у вас є альтернативні способи доступу до базового сховища. Якщо це вам не потрібно, ви можете увімкнути перенесення (rebase) змін до основного сховища, що створюватиме журнал із меншою кількістю внесків об’єднання.

Примітка

Перенесення може призвести до проблем, якщо злиття є складним. Тому вам слід бути обережним із його вмиканням.

Взаємодія із іншими

Weblate спрощує взаємодію із іншими учасниками проєкту за допомогою програмного інтерфейсу.

Дивись також

API

«Ліниві» внески

Weblate групує внески від одного автора так, щоб остаточний внесок був якомога більшим. Це значно зменшує кількість внесків, але призводить до того, що у вас може виникнути потреба явним чином ініціювати внески, якщо ви хочете підтримувати синхронізацію зі сховищем системи керування версіями, наприклад, для злиття (таке злиття типово увімкнено для групи Managers, див. Керування доступом).

Зміни у цьому режимі вносяться, щойно буде виконано будь-яку з таких умов:

Підказка

Внески створюються для кожного складника. Отже, якщо у вас багато складників, у вас буде багато внесків. Щоб зменшити кількість, ви можете скористатися додатком Сполучити Git подання.

Якщо ви хочете вносити зміни частіше і без перевірки віку, ви можете запланувати регулярне завдання зі створення внеску:

CELERY_BEAT_SCHEDULE = {
    # Unconditionally commit all changes every 2 minutes
    "commit": {
        "task": "weblate.trans.tasks.commit_pending",
        # Ommiting hours will honor per component settings,
        # otherwise components with no changes older than this
        # won't be committed
        "kwargs": {"hours": 0},
        # How frequently to execute the job in seconds
        "schedule": 120,
    }
}

Обробка сховища зі скриптами

Спосіб взаємодії Weblate зі сховищем коду можна змінити за допомогою Доповнення. Зверніться до розділу Виконання скриптів з додатка, щоб дізнатися про те, як виконувати зовнішні скрипти з додатків.

Підтримання синхронізації перекладів у різних складниках

Якщо у вас декілька складників перекладу, у вас може виникнути потреба у тому, щоб однакові рядки мали однакові переклади. Досягти такої синхронізації можна на декількох рівнях.

Синхронізація перекладу

Якщо увімкнено поширення перекладів (типова поведінка, див. Налаштовування складників), усі нові переклади автоматично виконуватимуться в усіх складниках із відповідними рядками. Авторство таких перекладів буде визначено належним чином — автором в усіх складниках вважатиметься той, хто здійснив переклад в одному із складників.

Примітка

Поширення перекладів потребує використання однакового ключа для одномовних форматів перекладу. Це слід мати на увазі при створенні ключів перекладу.

Перевірка коректності

Перевірка Неузгодженість вважається непройденою, якщо рядки є різними. Ви можете скористатися нею для рецензування таких відмінностей вручну і вибору належного перекладу.

Автоматичний переклад

Автоматичний переклад на основі різних складових може бути використано як спосіб синхронізації перекладів у різних складниках. Ви можете увімкнути автоматичний переклад вручну (див. Автоматичний переклад) або налаштувати його автоматичне виконання при оновленні сховища за допомогою додатка (див. Автоматичний переклад).