Генератор статических сайтов 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 - предусмотрел для локализации.

Как мог бы решить эту проблему человек, владеющий Золя и Тера?

0 ответов

Другие вопросы по тегам