Генератор статических сайтов Zola и локализация (l10n)
Проблема
Я новичок в Zola и ее шаблонизаторе Tera, и мне трудно сделать свою собственную тему Zola легко локализуемой, даже предоставляя некоторые готовые переводы, например, на английский и немецкий языки. Свободной интеграции Zolas пока нет - начиная с Zola v0.17.2 и AFAIK. Эта проблема не в многоязычной теме, а только в обеспечении легкой локализации.
Моё "хакерское" решение
Рассмотрим в качестве примера этот текст на странице, где опубликовано сообщение в блоге: . Я хочу локализовать статический текст, динамическую дату и ее формат.
В файле у меня есть файл , где в качестве языка можно установить другой язык с помощью некоторых существующих ресурсов, специфичных для языка. Я не хочу, чтобы эти ресурсы оказались в моемconfig.toml
файл, но они должны находиться в разных файлах для каждого языка.
Поэтому я используюdata
каталог, например, с этими файлами:en-translations.toml
, иde-translations.toml
. Первый файл выглядит так, второй имеет те же ключи, но другие значения:
# Global settings
settings_date_locale = "en_US"
settings_date_format = "%B %d, %Y"
# Language resources
published_on = "Published on"
Теперь в базовом шаблонеbase.html
, на котором основаны все остальные файлы шаблонов, я загружаю ресурсы, специфичные для языка, в переменную с именемres
:
{% set res = load_data(path='data/' ~ config.default_language ~ '-translations.toml') %}
{% set date_locale = res.settings_date_locale | default(value="en_US") %}
{% set date_format = res.settings_date_format | default(value="%B %d, %Y") %}
Я мог бы сослаться, напримерres.settings_date_format
напрямую, но поскольку мне нужен запасной вариант, я сохраняю его в отдельной переменной.
Благодаря этой подготовке я теперь могу делать в каждом шаблоне следующее:
<span>
{{ res.published_on }} {{ page.date | date(locale=date_locale, format=date_format) }}
</span>
Дляdefault_language = "en"
это будет отображаться какPublished on July 04, 2023
.
Дляdefault_language = "de"
это будет отображаться какVeröffentlicht am 04. Juli 2023
.
Мой вопрос
Я хочу включить легкую локализацию моей темы. Упомянутые выше решения кажутся неэлегантными, и я не уверен, что существует лучшее решение, даже то, которое автор Zola- начиная с версии v0.17.2 - предусмотрел для локализации.
Как мог бы решить эту проблему человек, владеющий Золя и Тера?