Bernhard Scheirle


About Me

Hello, my name is Bernhard.
I'm a computer science student at Karlsruher Institute of Technology.

Contact Me



blogroll


Pelican – Verbesserte Darstellung von Übersetzungen



In diesem Artikel geht es um Pelican1, ein Generator für statische (Web-)Seiten, und das Individualisieren des Themes.

Vor ein paar Tagen wurde ich per E-Mail gefragt welches Theme ich für diesen Blog verwende und insbesondere wie dieses mit Artikelübersetzungen umgeht.

Falls keine Übersetzungen vorhanden sind:

Image: No translation

Falls Übersetzungen vorhanden sind:

Image: Translation

Pelican unterstützt von Haus aus Übersetzungen und ein Methode um die Sprache auszuwählen:

1
2
3
4
<!-- Jinja Theme -->
{% for translation in article.translations %}
    <a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
{% endfor %}

Das Problem mit diesem Schnipsel ist das es nur Ländercodes (en, de, …) anstatt die Namen der Sprachen generiert. Um dies zu beheben brauchen wir eine Möglichkeit, einen Ländercode in den Namen der dazugehörigen Sprache zu überführen. Hierfür verwende ich einen eigenen Jinja-Filter:

pelicanconf.py:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
language_lookup = {
    'en': 'English',
    'de': 'Deutsch',
}

def lookup_lang_name(lang_code):
    return language_lookup[lang_code]

JINJA_FILTERS = {
    'lookup_lang_name': lookup_lang_name,
}

Theme:

Nun verwenden wir diesen Filter (und etwas mehr „fluff“) um die Ausgabe zu verbessern.

1
2
3
4
5
6
7
8
{{ article.lang | lookup_lang_name }},
{% if article.translations %}
    {% for translation in article.translations %}
        <a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang | lookup_lang_name }}</a>{% if not loop.last %}, {% endif %}
    {% endfor %}
{% else %}
    No translations
{% endif %}

Änderungen:

  • Ausgabe der aktuellen Sprache (Zeile 1).
  • Kommas zwischen den Sprachen (Zeile 4).
  • Falls keine Übersetzungen vorhanden sind wird dies angezeigt (If-Anweisung).
  • Eigenen Jinja-Filter verwendet.

Und schon hat mein eine schöne Anzeige um die Sprache auszuwählen.


  1. Pelican ist ein Generator für statische (Web-)Seiten. Er ist in Python geschrieben und benötigt keine Datenbank oder Serverseitige Anwendung. http://blog.getpelican.com/ 

Comments


There are no comments yet. Why aren't you the FIRST and shout something?

Add a Comment

You may format you comment with Markdown.

Comment Atom Feed