Налаштування перекладів
Переклади документації Darktable підтримуються через Weblate.
🔗Огляд налаштування та потоку інформації для перекладів за допомогою Weblate
In short:
- The docs are primarily maintained in English in the .md files present in
content/*.md. - From there a POT file (
po/content.pot) of all translatable strings is maintained. - Weblate maintains each language’s individual PO files (
po/content.{lang}.po) which contain the translated strings. - Upon deployment of the docs, language-specific .md-files are generated using
generate-translations.shwhich hugo then renders to .html files and the EPUB and PDF variants.
🔗З GitHub до Weblate: синхронізація джерельних рядків
-
Оригінальні англійські файли (
content/*.md) змінюються через пул-реквест на GitHub (див. робочий процес). -
Щоночі дія GitHub оновлює файл POT (
po/content.pot), що містить усі рядки, що можна перекладати, за допомогоюgenerate-translations.sh --no-translations. Примітка: Скрипт оновлює файли POT та PO, але ми не додаємо оновлені файли PO до репозиторію, оскільки в наших налаштуваннях файли PO повністю керуються Weblate, щоб уникнути конфліктів злиття. -
Weblate автоматично отримує оновлений POT-файл (запускається застосунком Weblate GitHub) та внутрішньо заповнює PO-файл кожної перекладеної мови новими/оновленими рядками.
-
Weblate зберігає зміни на GitHub, відкриваючи пул-реквест.
-
Пул-реквест приймають (можливо, після перевірки).
🔗З Weblate до GitHub: синхронізація перекладів
-
Переклади здійснюються на Weblate. Див. посібник перекладача для отримання посібника з перекладу.
-
Weblate внутрішньо оновлює PO-файл кожної мови та надсилає його до GitHub через пул-реквест. Щоб зменшити кількість пул-реквестів, це відбувається партіями.
🔗Розгортання перекладів
Після розгортання на docs.darktable.org перекладені .md-файли генеруються з PO-файлів у /po/ за допомогою generate-translations.sh --no-update. Цей крок вимкнено для автоматичної збірки GitHub Pages.
🔗Додавання нової мови
-
Дивіться документацію Weblate, щоб дізнатися, як це зробити. Переконайтеся, що щойно створений PO-файл збережено в репозиторії dtdocs.
-
У файлах
config.yaml,config-pdf.yamlтаconfig-epub.yamlзнайдіть рядокlanguages:. -
Додайте мову, на яку хочете перекласти. Наприклад, запис для англійської виглядає так:
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.
-
Перейдіть до
themes/hugo-darktable-docs-theme/i18n. -
Скопіюйте файл
en-us.yamlта назвіть новий файл своєю мовою, використовуючи код локалі через дефіс (наприклад,de-de.yaml,fr-fr.yaml). -
Перекладіть рядки в новому yaml-файлі.
-
Збережіть перекладений yaml-файл у git, надішліть його на GitHub та відкрийте пул-реквест, щоб ваші зміни були прийняті.
-
Повторіть для
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 залишаються недоторканими.