Accept-Language test

Detta är ett snabbt test med att använda MultiViews i apache2 för att leverera två versioner av denna artikel: denna version på svenska och en annan version på engelska. Vilken version du ser beror på vad din webbläsare har skickat i Accept-Language HTTP-headern. Du kan få den engelska versionen genom att klicka på "en" i "Translations" längre upp.

För att få detta att fungera så var jag tvingen att fippla en del med pelican. Först redigerade jag pelicanconf.py och ändrade filnamn och URL:er på följande vis:

ARTICLE_URL = '{category}/{date:%Y}/{date:%m}/{date:%d}/{slug}/'
ARTICLE_SAVE_AS = ARTICLE_URL + 'index.html.en'
ARTICLE_LANG_URL = ARTICLE_URL + 'index.html.{lang}'
ARTICLE_LANG_SAVE_AS = ARTICLE_URL + 'index.html.{lang}'

ARTICLE_LANG_URL är troligtvis inte nödvändigt, vilket vi snart kommer att se varför.

Jag försökte med lite olika sätt att få "Translations" att altid länka till den andra översättningen explicit (sv -> en och vice versa). Detta visade sig att inte gå att få till, så jag hårdkodade istället templaten så att det petar in länkar till båda språkvarianter om det finns översättningar tillgängliga. Eftersom jag endast kommer skriva innehåll på svenska eller engelska, så räckte det med att alltid länka index.html.en och index.html.sv. Den här sidan är baserad på notmyidea-templaten, så jag bytte innehållet i i notmyidea/templates/translations.html till:

{% macro translations_for(article) %}
{% if article.translations %}
Translations: <a href="index.html.en">en</a>, <a href="index.html.sv">sv</a>
{% endif %}
{% endmacro %}

Det borde vara allt som krävs på ett ungefär ☺