Налаштування перекладів

Переклади документації Darktable підтримуються через Weblate.

🔗Огляд налаштування та потоку інформації для перекладів за допомогою Weblate

In short:

  1. The docs are primarily maintained in English in the .md files present in content/*.md.
  2. From there a POT file (po/content.pot) of all translatable strings is maintained.
  3. Weblate maintains each language’s individual PO files (po/content.{lang}.po) which contain the translated strings.
  4. Upon deployment of the docs, language-specific .md-files are generated using generate-translations.sh which hugo then renders to .html files and the EPUB and PDF variants.

🔗З GitHub до Weblate: синхронізація джерельних рядків

  1. Оригінальні англійські файли (content/*.md) змінюються через пул-реквест на GitHub (див. робочий процес).

  2. Щоночі дія GitHub оновлює файл POT (po/content.pot), що містить усі рядки, що можна перекладати, за допомогою generate-translations.sh --no-translations. Примітка: Скрипт оновлює файли POT та PO, але ми не додаємо оновлені файли PO до репозиторію, оскільки в наших налаштуваннях файли PO повністю керуються Weblate, щоб уникнути конфліктів злиття.

  3. Weblate автоматично отримує оновлений POT-файл (запускається застосунком Weblate GitHub) та внутрішньо заповнює PO-файл кожної перекладеної мови новими/оновленими рядками.

  4. Weblate зберігає зміни на GitHub, відкриваючи пул-реквест.

  5. Пул-реквест приймають (можливо, після перевірки).

🔗З Weblate до GitHub: синхронізація перекладів

  1. Переклади здійснюються на Weblate. Див. посібник перекладача для отримання посібника з перекладу.

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

🔗Розгортання перекладів

Після розгортання на docs.darktable.org перекладені .md-файли генеруються з PO-файлів у /po/ за допомогою generate-translations.sh --no-update. Цей крок вимкнено для автоматичної збірки GitHub Pages.

🔗Додавання нової мови

  1. Дивіться документацію Weblate, щоб дізнатися, як це зробити. Переконайтеся, що щойно створений PO-файл збережено в репозиторії dtdocs.

  2. У файлах config.yaml, config-pdf.yaml та config-epub.yaml знайдіть рядок languages:.

  3. Додайте мову, на яку хочете перекласти. Наприклад, запис для англійської виглядає так:

      en-us:
        title: darktable user manual
        weight: 1
    

🔗Увімкнення та вимкнення мов

Мови контролюються двома незалежними системами, які необхідно синхронізувати вручну:

  • config.yaml та config-pdf.yaml — конфігурація Hugo. Перелічені тут мови отримують власний розділ створеного веб-сайту або PDF-файлу.

  • disable-languages — Список кодів мов, розділених пробілами, у базовому каталозі репозиторію. generate-translations.sh зчитує цей файл і пропускає створення файлів .{мова}.md для будь-якої мови зі списку, незалежно від того, чи існує для неї PO-файл.

Перемикач мов у темі відображає мову лише тоді, коли для поточної сторінки існують перекладені файли .{мова}.md — він використовує змінні Hugo .IsTranslated та .Translations, які відображають фактичні файли на диску, а не записи config.yaml. Мова, присутня в config.yaml, але вказана в disable-languages, таким чином не відображатиметься в перемикачі, оскільки для неї не генеруються перекладені файли. Її запис у config.yaml є неактивним, доки його не буде видалено з disable-languages.

Щоб увімкнути мову, вона має бути присутня у файлах config.yaml, config-pdf.yaml та config-epub.yaml, але відсутня у файлах disable-languages.

Щоб вимкнути мову, її слід вказати у disable-languages. Записи в config.yaml, config-pdf.yaml та config-epub.yaml можна залишити для можливості повторного ввімкнення мови.

🔗Переклад рядків теми для веб-сайту, EPUB та PDF

Існує три теми для документації Darktable: одна для веб-сайту HTML, одна для EPUB та одна для PDF. Кожна з них має невеликий набір рядків інтерфейсу користувача (наприклад, “Table of Contents”, “Copyright”, “Search”), які потрібно перекласти вручну — ці рядки не керуються Weblate.

  1. Перейдіть до themes/hugo-darktable-docs-theme/i18n.

  2. Скопіюйте файл en-us.yaml та назвіть новий файл своєю мовою, використовуючи код локалі через дефіс (наприклад, de-de.yaml, fr-fr.yaml).

  3. Перекладіть рядки в новому yaml-файлі.

  4. Збережіть перекладений yaml-файл у git, надішліть його на GitHub та відкрийте пул-реквест, щоб ваші зміни були прийняті.

  5. Повторіть для themes/hugo-darktable-docs-epub-theme/i18n та themes/hugo-darktable-docs-pdf-theme/i18n. Ці теми використовують коротші коди локалей, використовуючи лише код мови (наприклад, de.yaml) з можливим додаванням регіональних варіантів після символу підкреслення (наприклад, pt_br.yaml).

🔗generate-translations.sh

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

Цей скрипт є обгорткою навколо po4a для організації взаємодії між оригінальними файлами .md та перекладами. Скрипт зчитує файл disable-languages у базовому каталозі репозиторію, фільтрує вимкнені мови, створює тимчасовий конфігураційний файл po4a, що містить усі файли content/**/*.md, а потім викликає po4a $1 --verbose $po4a_conf — прапорець передається безпосередньо до po4a. Він вимагає одного з трьох аргументів.

--no-translations
Генерує POT- та PO-файли (po/content.pot та po/content.{lang}.po) з джерельних .md-файлів (content/*.md). Не створює жодних перекладених вихідних файлів. Нові або змінені рядки з джерельних файлів завантажуються у POT/PO-файли, але файли *.{lang}.md не створюються. Це використовується після оновлень англійських джерельних файлів для підготовки POT- та PO-файлів для Weblate.
--no-update
Генерує перекладені файли Markdown з існуючих PO-файлів, без оновлення POT/PO-файлів. Це означає, що вихідні файли (content/*.md) не зчитуються повторно; існуючі переклади відображаються безпосередньо в локалізованих .{lang}.md файлах.
--rm-translations
Видаляє згенеровані перекладені файли. po4a видаляє локалізовані вихідні файли *.{lang}.md, попередньо створені за допомогою --no-update. Файли PO/POT залишаються недоторканими.

translations