Переводим статический веб-сайт на языки мира при помощи Weblate

Генераторы статических сайтов (static site generators, SSGs), такие, как Zola (Rust), Hugo (Golang), Jekyll (Ruby), Pelican (Python), Gatsby (JS) и прочие, активно набирают для создания личных технологических блогов и небольших веб-сайтов. Большинство популярных SSG поддерживают локализацию строк интерфейса, а также дают возможность размещения страниц на нескольких зыках side-by-side. Однако, эффективное поддержание актуальности перевода самого контента на разных языках является весьма непростой задачей, особенно когда контент статей и разделов на сайте обновляется со временем.

В данной статье мы предложим интересный подход, который позволяет не только перевести статический Markdown-контент на все языки мира, но и поддерживать актуальность переводов при изменении исходных текстов. Данный туториал будет на примере Zola, но предлагаемый подход с минимальными изменениями адаптируется практически к любым популярным статическим генераторам.

TL; DR: Markdown (en) → gettext → Weblate → Markdown (ru, de, fr, …)

Введение

Обычной практикой в большинстве SSGs является добавление локализованных копий контента рядом друг с другом с помощью файлов ..md. Например, чтобы перевести index.md на французский и немецкий языки, вам нужно создать файлы index.fr.md и index.de.md в том же каталоге, что и index.md. На примере Zola:

content/_index.md