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:
$ 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:
$ 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.