pelicanconf.py - Lokalisierung

Zusätzliche Zeitangaben in Metadaten von Seiten und Artikeln

Da ich historische "Fußabdrücke" im WWW in meinen Blog retrofitten möchte, möchte ich weitere Daten zu den Metadaten von Seiten und Artikeln hinzufügen können. Damit diese dann auch lokalisiert werden können müssen aus den String Metadaten datetime-Objekte erzeugt werden.

import datetime
def germandatestring2string_filter(germandatestring):
    return datetime.datetime.strptime(germandatestring,'%d.%m.%Y')

Meine Eingaben müssen einheitlich im deutschen Datumsformat erfolgen.

Übersetzungen von Kategorienamen

CATEGORY_TRANSLATIONS = { 'conferences' : { 'de': 'Konferenzen', 'en': 'Conferences', },
                            'homepage' : { 'de': 'Heimatseite', 'en': 'Home Page', }, }

def localizecategory_filter (lang,category):
    return CATEGORY_TRANSLATIONS.get(category).get(lang)

Übersetzungen von Textfragmenten

In manchen Templates kann man nur schlecht auf Textfragmente verzichten, die natürlich übersetzt gehören.

PHRASE_TRANSLATIONS = {
        'imprint' : { 'de': 'Impressum', 'en': 'Imprint' },
        'landingpage_blogheader' : { 'de': 'Neuste Posts', 'en': 'Recent Posts' },
        'createdwith' : { 'de': 'Erstellt mit', 'en': 'Created with' },
        'and' : { 'de': 'und', 'en': 'and' },
        'bloggedby' : { 'de': 'Von', 'en': 'By'},
        'bloggedon' : { 'de': 'gebloggt am', 'en': 'blogged on' },
        'bloggedin' : { 'de': 'In', 'en': 'In' },
        'translations' : { 'de': 'Übersetzungen', 'en': 'Translations' }  }

def localizephrase_filter (lang,phrase):
    return PHRASE_TRANSLATIONS.get(phrase).get(lang)

Schließlich sind die Filter noch zu registrieren

JINJA_FILTERS = {
    'germandatestring2date': germandatestring2string_filter,
    'localizecategory': localizecategory_filter,
    'localizephrase': localizephrase_filter
    }

Verwendung

{% if article.blogdate %}
({{ article.lang | localizephrase('bloggedon') }} {{ article.blogdate | germandatestring2date | strftime(article.date_format) }})
{% endif %}<br/>
{{ article.lang | localizephrase('bloggedin') }}
<a href="{{ ... }}/{{ article.category }}.html">{{ article.lang | localizecategory(article.category) }}</a>.<br/>

Copyright © 2016 Uwe Ritzmann - Erstellt mit Pelican, Python und Skeleton.