diff --git a/utils/templates/utils/_language_switcher_get.html b/utils/templates/utils/_language_switcher_get.html new file mode 100644 index 0000000..ae9f26e --- /dev/null +++ b/utils/templates/utils/_language_switcher_get.html @@ -0,0 +1,29 @@ +{% load i18n translation_tags %} + + {% get_language_info_list for LANGUAGES as languages %} + + {% for language in languages %} + {% if request.LANGUAGE_CODE != language.code %} + {{ language.name_local }} + {% else %} + {{ language.name_local }} + {% endif %} + {% if not forloop.last %}{{ separator|default:"/" }}{% endif %} + {% endfor %} + + + {% comment %} + // Language Switcher + + html { + .selected-language { color: $active_color; } + + &:lang(de) { + a.language-switch[hreflang=en] { @include interactive-underline; } + } + + &:lang(en) { + a.language-switch[hreflang=de] { @include interactive-underline; } + } + } + {% endcomment %} diff --git a/utils/templates/utils/_language_switcher_post.html b/utils/templates/utils/_language_switcher_post.html new file mode 100644 index 0000000..3938ca3 --- /dev/null +++ b/utils/templates/utils/_language_switcher_post.html @@ -0,0 +1,50 @@ +{% load i18n %} + + {% get_language_info_list for LANGUAGES as languages %} + + {% for language in languages %} + {% if request.LANGUAGE_CODE != language.code %} +
+ {% else %} + {{ language.name_local }} + {% endif %} + {% if not forloop.last %}{{ separator|default:"/" }}{% endif %} + {% endfor %} + + + {% comment %} + // Language Switcher + + form.language-switch { + display: inline; + margin: 0; + padding: 0; + } + + form.language-switch button { + margin: 0; + padding: 0; + border: none; + background: none; + + @include interactive-underline; + } + + html { + .selected-language { color: $active_color; } + + &:lang(de) { + a.language-switch[hreflang=en] { @include interactive-underline; } + } + + &:lang(en) { + a.language-switch[hreflang=de] { @include interactive-underline; } + } + } + + {% endcomment %} diff --git a/utils/templatetags/translation_tags.py b/utils/templatetags/translation_tags.py index 7afc930..02d78d7 100644 --- a/utils/templatetags/translation_tags.py +++ b/utils/templatetags/translation_tags.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals # Erik Stein, 2014-2015
from django import template
-from django.db import models
from ..translation import get_translation, get_translated_field
@@ -22,3 +21,55 @@ def translate(obj, field_name):
# Alias
translated_field = translate
+
+
+'''
+Unfinished:
+
+from django import template
+from django.core.urlresolvers import reverse
+from django.core.urlresolvers import resolve
+from django.urls.base import translate_url
+
+
+class TranslatedURL(template.Node):
+ # from http://stackoverflow.com/questions/11437454/django-templates-get-current-url-in-another-language
+
+ def __init__(self, language):
+ self.language = language
+
+ def render(self, context):
+ view = resolve(context['request'].path)
+ request_language = translation.get_language()
+ translation.activate(self.language)
+ url = reverse(view.url_name, args=view.args, kwargs=view.kwargs)
+ translation.activate(request_language)
+ return url
+
+
+@register.tag(name='translate_url')
+def do_translate_url(parser, token):
+ language = token.split_contents()[1]
+ return TranslatedURL(language)
+
+
+@register.simple_tag
+def translate_url(language, url=None):
+ """
+ {% get_language_info_list for LANGUAGES as languages %}
+ {% for language in languages %}
+ {{ language.name_local }}
+ {% endfor %}
+ """
+
+ import ipdb; ipdb.set_trace()
+ # if not url:
+ # view = resolve(context['request'].path)
+ # request_language = translation.get_language()
+ # translation.activate(self.language)
+ # url = reverse(view.url_name, args=view.args, kwargs=view.kwargs)
+
+ # view = resolve(context['request'].path)
+
+ return TranslatedURL(language)
+'''
diff --git a/utils/translation.py b/utils/translation.py
index 1b648eb..73f5a0a 100644
--- a/utils/translation.py
+++ b/utils/translation.py
@@ -8,12 +8,13 @@ from django import http
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist, FieldDoesNotExist
from django.core.urlresolvers import translate_url
+from django.http import HttpResponseRedirect
from django.template.loader import select_template
from django.utils import translation
-from django.views.generic import TemplateView
-from django.utils.translation import check_for_language, LANGUAGE_SESSION_KEY
from django.utils.http import is_safe_url
-from django.http import HttpResponseRedirect
+from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
+from django.utils.translation import check_for_language, LANGUAGE_SESSION_KEY
+from django.views.generic import TemplateView
from django.views.i18n import LANGUAGE_QUERY_PARAMETER
@@ -168,9 +169,10 @@ def active_language(lang='de'):
translation.deactivate()
-def set_language(request):
+def set_language_get(request):
"""
- Modified copy from django.views.i18n
+ set_language per GET request,
+ modified copy from django.views.i18n (django 1.9.x)
"""
next = request.POST.get('next', request.GET.get('next'))
if not is_safe_url(url=next, host=request.get_host()):