Datum Tags Pelican

Im letzten November wurde die Version 4 von Pelican veröffentlicht. Ich habe meine Installation jetzt geupdatet, und promt brach die Übersetzung mit Fehlermeldung ab:

  Terminal
$ pelican content
WARNING: %s usage in CATEGORY_FEED_ATOM is deprecated, use {slug} instead.
WARNING: {filename} used for linking to staticcontent images/sciencemarch.jpeg in Verschiedenes/2017-04-20-march-for-science.md. Use {static} instead
CRITICAL: UndefinedError: ‚gettext‘ is undefined

Während die Warnungen durch in den Release-Notes gelisteten Änderungen begründet waren, machte micht der kritische Fehler erst einmal ratlos.

Nach einiger Recherche erwies sich die Jinja2-Extension „jinja2.ext.i18n“ als der Übeltäter. Die Extension erwartet, bei ihrem Aufruf ein gettext (oder babel) Object vorzufinden. Da ich nicht mit den Interna von Jinja2 oder den Kontext ihres Aufrufes vertraut bin, war mir nicht klar, wie ich dies erreichen kann. In einem Bugreport las ich schließlich, dass das Pelican-Plugin „i18n_subsites“ das gewünschte Environment präpariert.

Jedoch fühte ein

PLUGINS = [
  # ...
  'i18n_subsites',
  # ...
  ]

zu neuen Fehlermeldungen:

  Terminal
$ pelican content
ERROR: Cannot load plugin i18n_subsites
| ImportError: cannot import name ‚Draft‘ from ‚pelican.contents‘ (/usr/local/lib/python3.7/site-packages/pelican/contents.py)
WARNING: {filename} used for linking to staticcontent images/sciencemarch.jpeg in Verschiedenes/2017-04-20-march-for-science.md. Use {static} instead
CRITICAL: UndefinedError: ‚gettext‘ is undefined

i18n_subsites konnte also nicht geladen werden. Dies lag wiederum daran, dass Pelican kein Draft-Object mehr hat, sondern man Drafts nun dem status="draft" beim Article-Object kennzeichnet. Die neue Version von i18n_subsites hat dies schon berücksichtigt:

try:
    from pelican.contents import Draft
except ImportError:
    from pelican.contents import Article as Draft

Die Anwendung dieses Patches in meiner lokalen Installation verleiht meinem Pelican wieder Flügel.