Інтеграція із Weblate#

Основи Weblate#

Структура проєктів і складників#

У Weblate переклади упорядковано за проєктами та складниками. Кожен проєкт може містити декілька складників, які містять переклади окремими мовами. Складник відповідає одному файлу перекладу (наприклад, GNU Gettext або Рядкові ресурси Android). Проєкти призначено для полегшення упорядковування складників у логічні набори (наприклад, для групування усіх перекладів, які використовуються у одному застосунку).

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

Repository integration#

Weblate is built to integrate with upstream version control repository, Безперервна локалізація describes building blocks and how the changes flow between them.

Дивись також

Огляд архітектури describes how Weblate works internally.

User attribution#

Weblate keeps the translations properly authored by translators in the version control repository by using name and e-mail. Having a real e-mail attached to the commit follows the distributed version control spirits and allows services like GitHub to associate your contributions done in Weblate with your GitHub profile.

This feature also brings in risk of misusing e-mail published in the version control commits. Moreover, once such a commit is published on public hosting (such as GitHub), there is effectively no way to redact it. Weblate allows choosing a private commit e-mail in Обліковий запис to avoid this.

Therefore, admins should consider this while configuring Weblate:

Імпортування проєкту з локалізації до Weblate#

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

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

Отримання оновлень перекладів з Weblate#

Weblate зберігає оновлені рядки у базі даних і записує їх до локального сховища системи керування версіями. Ви можете додати сховище (якщо увімкнено Засіб експортування Git) як додаткове віддалене сховище і отримувати оновлення перекладів з нього.

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

Запис змін можна автоматизувати, надавши Weblate доступ до запису до вашого сховища і налаштувавши адресу запису у складнику перекладу, див. Записування змін з Weblate.

Крім того, ви можете скористатися Програмний інтерфейс REST Weblate для оновлення перекладів у відповідності з найсвіжішою версією.

Отримання зовнішніх змін у Weblate#

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

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

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

Додавання нових рядків#

Якщо ваші файли перекладу зберігаються в VCS разом з кодом, ви, швидше за все, маєте робочий простір для розробників, щоб ввести нові рядки. Яким би не був спосіб отримання доданих рядків, скористайтеся Шлюз якості для початкових рядків, щоб уникнути помилок.

Коли файли перекладу є окремими від коду, можна скористатися описаними далі способами, щоб ввести нові рядки у Weblate.

  • Власноруч, застосувавши :guilabel:` Додати новий рядок перекладу` з меню Засоби у розділі початкової мови.

  • Програмно, використовуючи API POST /api/translations/(string:project)/(string:component)/(string:language)/units/.

  • Завантаживши початковий файл як Замінити наявний файл перекладу (це замінює наявні рядки, тому переконайтесь, що файл містить як старі, так і нові рядки) або Додати нові рядки, перегляньте Способи імпортування.

Примітка

Доступність можливості додавати рядки у Weblate залежить від Керування рядками.

Оновлення файлів мови перекладу#

Для одномовних файлів (див. Підтримувані формати файлів) Weblate може додавати нові рядки перекладу, яких немає в Основний файл для одномовного перекладу, а не в самих перекладах. Втім, він не вилучає застарілих рядків автоматичного, як можна було б очікувати. Якщо вам потрібне таке очищення, встановіть Очищення файлів перекладу, який виконає чищення перекладу відповідно до ваших вимог.

Крім того, Weblate не намагатиметься оновлювати двомовні файли у будь-який спосіб, тому якщо вам потрібне оновлення файлів po на основі pot, вам слід виконати оновлення власноруч за допомогою пункту Оновити рядки джерела Способи імпортування або за допомогою додатка Оновити файли po, порівнявши із pot (msgmerge).

Додавання нових рядків#

Ви можете додавати нові рядки у Weblate, якщо увімкнено Керування рядками. Втім, зазвичай, краще додавати нові рядки разом зі змінами у коді, які призводять до їхнього додавання.

Для одномовних форматів потрібне додавання нового рядка до Основний файл для одномовного перекладу. Типово, це має бути зроблено розробниками під час написання коду. Можливо, вам слід впровадити рецензування таких рядків за допомогою Шлюз якості для початкових рядків.

У двомовних форматах рядки, типово, видобуваються з початкового коду за допомогою певних інструментів (зокрема xgettext або intltool-update). Скористайтеся документацією до вашої бібліотеки локалізації, щоб дізнатися більше про те, як це зробити. Після видобування рядків може знадобитися додатковий крок для оновлення наявних перекладів, див. Оновлення файлів мови перекладу.

Підказка

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

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

Керування сховищем керування версіями#

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

Підказка

За допомогою Безперервна локалізація до сховища автоматично надсилаються зміни щоразу, коли вони з’являються, і, як правило, нема потреби виконувати з ними дії власноруч.

../_images/component-repository.webp