Implement translation

This commit is contained in:
Götz 2019-05-17 16:28:35 +02:00
parent 6aac94436e
commit d9ccebae54
7 changed files with 75 additions and 24 deletions

View File

@ -15,6 +15,7 @@ from account_manager.utils.mail_utils import realm_send_mail
from .forms import RealmAddForm, RealmUpdateForm from .forms import RealmAddForm, RealmUpdateForm
from .models import LdapGroup, LdapUser from .models import LdapGroup, LdapUser
from ldap import LDAPError from ldap import LDAPError
from django.utils.translation import gettext
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -1,4 +1,5 @@
from django.templatetags.static import static from django.templatetags.static import static
from django.utils.translation import gettext, ngettext
from django.urls import reverse from django.urls import reverse
from django.utils import translation from django.utils import translation
@ -6,8 +7,10 @@ from jinja2 import Environment
def environment(**options): def environment(**options):
env = Environment(extensions=['jinja2.ext.i18n'], **options) options['extensions'] = ['jinja2.ext.i18n']
env = Environment(**options)
# env.install_gettext_translations(translation) # env.install_gettext_translations(translation)
env.install_gettext_callables(gettext=gettext, ngettext=ngettext, newstyle=True)
env.globals.update({ env.globals.update({
'static': static, 'static': static,
'url': reverse, 'url': reverse,

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-16 13:48+0000\n" "POT-Creation-Date: 2019-05-17 14:23+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -32,10 +32,58 @@ msgstr ""
msgid "Deutsch" msgid "Deutsch"
msgstr "" msgstr ""
#: templates/base.jinja2:34 #. Translators: The Application Name: default LAMa
msgid "LAMa" #: templates/base.jinja2:33
msgid "AppName"
msgstr "LAMa"
#. Translators: Logout button
#: templates/base.jinja2:40
msgid "Logout"
msgstr "" msgstr ""
#: templates/user/realm_user_detail.jinja2:23 #. Translators: Login Button
#: templates/base.jinja2:43
msgid "Login"
msgstr ""
#. Translators: About link title
#: templates/base.jinja2:58 templates/base_admin.jinja2:50
msgid "About"
msgstr "Über"
#: templates/base_admin.jinja2:10
msgid "DjangoAdminArea"
msgstr "Django Adminbereich"
#: templates/base_admin.jinja2:14
msgid "Realms"
msgstr "Bereiche"
#: templates/base_admin.jinja2:24
msgid "RealmOverview"
msgstr "Bereichsübersicht"
#: templates/base_admin.jinja2:27
msgid "Realm"
msgstr "Bereich"
#: templates/base_admin.jinja2:31
msgid "RealmInformation"
msgstr "Bereichsinformationen"
#: templates/base_admin.jinja2:34
msgid "User"
msgstr "Nutzer"
#: templates/base_admin.jinja2:37
msgid "Groups"
msgstr "Gruppen"
#: templates/base_admin.jinja2:46
msgid "RealmAdd"
msgstr "Bereich hinzufügen"
#: templates/user/realm_user_detail.jinja2:22
msgid "Anzeigename:" msgid "Anzeigename:"
msgstr "" msgstr ""

View File

@ -1,5 +1,3 @@
{#{% load static %}#}
{#{% load i18n %}#}
{# ===== HTML ===== #} {# ===== HTML ===== #}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" dir="ltr"> <html lang="en" dir="ltr">
@ -31,15 +29,18 @@
<a class="navbar-brand" href="{{ url('realm-home') }}"> <a class="navbar-brand" href="{{ url('realm-home') }}">
<img src="{{ static('images/lama.svg') }}" width="30" height="30" class="d-inline-block align-top" <img src="{{ static('images/lama.svg') }}" width="30" height="30" class="d-inline-block align-top"
alt=""> alt="">
{% trans "LAMa" %} {# Translators: The Application Name: default LAMa #}
{{ _('AppName') }}
</a> </a>
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<span class="navbar-text"> <span class="navbar-text">
Hi <a href="{{ url('realm-home') }}?show_user=True">{{ request.user.username }}</a>! Hi <a href="{{ url('realm-home') }}?show_user=True">{{ request.user.username }}</a>!
<a href="{{ url('logout') }}?next=/">Logout <i class="fas fa-sign-out-alt"></i></a> {# Translators: Logout button #}
<a href="{{ url('logout') }}?next=/">{{ _('Logout') }} <i class="fas fa-sign-out-alt"></i></a>
{% else %} {% else %}
<a href="{{ url('login') }}"><i class="fas fa-sign-in-alt"></i> Login</a> {# Translators: Login Button #}
<a href="{{ url('login') }}"><i class="fas fa-sign-in-alt"></i> {{ _('Login') }}</a>
{% endif %} {% endif %}
</span> </span>
</nav> </nav>
@ -48,12 +49,13 @@
{% block content %}{% endblock %} {% block content %}{% endblock %}
{% endblock %} {% endblock %}
{% if not realms and not realm and not request.user.is_superuser%} {% if not realms and not realm and not request.user.is_superuser %}
<footer class="bg-light footer mt-auto py-3 text-center"> <footer class="bg-light footer mt-auto py-3 text-center">
<div class="container"> <div class="container">
<span class="text-muted"> <span class="text-muted">
<a href="{{ url('about') }}">Über</a> {# Translators: About link title #}
<a href="{{ url('about') }}">{{ _('About') }}</a>
</span> </span>
</div> </div>
</footer> </footer>

View File

@ -1,5 +1,4 @@
{% extends 'base.jinja2' %} {% extends 'base.jinja2' %}
{#{% load i18n %}#}
{% block body %} {% block body %}
<div class="d-flex wrapper"> <div class="d-flex wrapper">
@ -8,11 +7,11 @@
{% if request.user.is_superuser %} {% if request.user.is_superuser %}
<div class="list-group list-group-flush"> <div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action bg-light" <a class="list-group-item list-group-item-action bg-light"
href="{{ url('django-additional-admin-list') }}"><i class="fas fa-crown"></i> Django Adminbereich</a> href="{{ url('django-additional-admin-list') }}"><i class="fas fa-crown"></i> {{ _('DjangoAdminArea') }}</a>
</div> </div>
{% endif %} {% endif %}
{% if realms %} {% if realms %}
<h2 class="sidebar-heading">Bereiche</h2> <h2 class="sidebar-heading">{{ _('Realms') }}</h2>
<div class="list-group list-group-flush"> <div class="list-group list-group-flush">
{% for realm_item in realms %} {% for realm_item in realms %}
<a href="{{ url('realm-detail', args=[realm_item.id]) }}" <a href="{{ url('realm-detail', args=[realm_item.id]) }}"
@ -22,20 +21,20 @@
{% else %} {% else %}
<div class="list-group-flush"> <div class="list-group-flush">
<a href="{{ url('realm-home') }}" class="list-group-item list-group-item-action bg-light"> <a href="{{ url('realm-home') }}" class="list-group-item list-group-item-action bg-light">
<i class="fas fa-list"></i> Bereichsübersicht</a> <i class="fas fa-list"></i> {{ _('RealmOverview') }}</a>
</div> </div>
{% if realm %} {% if realm %}
<h2 class="sidebar-heading">Bereich {{ realm.name }}</h2> <h2 class="sidebar-heading">{{ _('Realm') }} <span class="text-uppercase">{{ realm.name }}</span></h2>
<div class="list-group list-group-flush"> <div class="list-group list-group-flush">
<a href="{{ url('realm-detail', args=[realm.id]) }}" <a href="{{ url('realm-detail', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-cogs"></i> class="list-group-item list-group-item-action bg-light"><i class="fas fa-cogs"></i>
Bereichsinformationen</a> {{ _('RealmInformation') }}</a>
<a href="{{ url('realm-user-list', args=[realm.id]) }}" <a href="{{ url('realm-user-list', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-users"></i> class="list-group-item list-group-item-action bg-light"><i class="fas fa-users"></i>
Nutzer</a> {{ _('User') }}</a>
<a href="{{ url('realm-group-list', args=[realm.id]) }}" <a href="{{ url('realm-group-list', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-user-friends"></i> class="list-group-item list-group-item-action bg-light"><i class="fas fa-user-friends"></i>
Gruppen</a> {{ _('Groups') }}</a>
</div> </div>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -44,11 +43,11 @@
<div class="list-group-item bg-light border-0"></div> <div class="list-group-item bg-light border-0"></div>
<a href="{{ url('realm-add') }}" <a href="{{ url('realm-add') }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-plus-square"></i> class="list-group-item list-group-item-action bg-light"><i class="fas fa-plus-square"></i>
Bereich hinufügen</a> {{ _('RealmAdd') }}</a>
</div> </div>
{% endif %} {% endif %}
<div class="sidebar-bottom list-group-flush border-top"> <div class="sidebar-bottom list-group-flush border-top">
<a href="{{ url('about') }}" class="list-group-item list-group-item-action bg-light">Über</a> <a href="{{ url('about') }}" class="list-group-item list-group-item-action bg-light">{{ _('About') }}</a>
</div> </div>
</div> </div>

View File

@ -1,5 +1,4 @@
{% extends 'base_admin.jinja2' %} {% extends 'base_admin.jinja2' %}
{% load i18n %}
{% block admin_content %} {% block admin_content %}
<div class="row "> <div class="row ">
<div class="col-12 p-3"> <div class="col-12 p-3">

View File

@ -1,5 +1,4 @@
{% extends 'realm/realm_detailed.jinja2' %} {% extends 'realm/realm_detailed.jinja2' %}
{#{% load i18n %}#}
{% import 'macros/form_macros.jinja2' as mform %} {% import 'macros/form_macros.jinja2' as mform %}
{% block detail_content %} {% block detail_content %}