feat: Add basic translation support

This commit is contained in:
2024-04-12 23:37:03 +02:00
parent 4767fb4e76
commit 8942d029d1
8 changed files with 680 additions and 6 deletions

View File

@@ -12,8 +12,8 @@ from notfellchen.settings import host
def mail_admins_new_report(report):
subject = _("New report")
for moderator in Member.objects.filter(Q(trust_level=Member.MODERATOR) | Q(trust_level=Member.ADMIN)):
greeting = _("Moin,\r\n")
new_report_text = "es wurde eine Vermittlung gemeldet.\r\n"
greeting = _("Moin,") + "\r\n"
new_report_text = _("es wurde eine Vermittlung gemeldet.") + "\r\n"
if len(report.reported_broken_rules.all()) > 0:
reported_rules_text = f"Ein Verstoß gegen die folgenden Regeln wurde gemeldet [{', '.join(report.reported_broken_rules.all())}]\r\n"
else:

View File

@@ -22,9 +22,26 @@
<button type="submit">Ausloggen</button>
</form>
</div>
{% else %}
{% else %}
<a href="{% url "django_registration_register" %}">Registrieren</a>
<a href="{% url "login" %}">Einloggen</a>
{% endif %}
<form action="{% url 'change-language' %}" method="post" onchange='this.form.submit()'>
{% csrf_token %}
<select name="language" onchange='this.form.submit()'>
{% get_current_language as LANGUAGE_CODE_CURRENT %}
{% get_available_languages as LANGUAGES %}
{% for language in LANGUAGES %}
<option value="{{ language.0 }}" {% if language.0 == LANGUAGE_CODE_CURRENT %} selected{% endif %}>
{{ language.0|language_name_local }}
</option>
<!--<option value="{{ language.0 }}" {% if language.0 == LANGUAGE_CODE %} selected{% endif %}>
{{ language.0|language_name_local }} ({{ language.0 }})
</option>-->
{% endfor %}
</select>
<!--<input type="submit" value={% translate "change" %}>-->
</form>
</div>
</div>

View File

@@ -47,4 +47,6 @@ urlpatterns = [
path('accounts/', include('django_registration.backends.activation.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('change-language', views.change_language, name="change-language")
]

View File

@@ -1,6 +1,9 @@
from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from .mail import mail_admins_new_report
from notfellchen import settings
from fellchensammlung.models import AdoptionNotice, MarkdownContent, Animal, Rule, Image, Report, ModerationAction, \
Member
@@ -15,6 +18,24 @@ def index(request):
return render(request, 'fellchensammlung/index.html', context=context)
def change_language(request):
if request.method == 'POST':
language_code = request.POST.get('language')
if language_code:
if language_code != settings.LANGUAGE_CODE and language_code in list(zip(*settings.LANGUAGES))[0]:
redirect_path = f'/{language_code}/'
elif language_code == settings.LANGUAGE_CODE:
redirect_path = '/'
else:
response = HttpResponseRedirect('/')
return response
from django.utils import translation
translation.activate(language_code)
response = HttpResponseRedirect(redirect_path)
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language_code)
return response
def adoption_notice_detail(request, adoption_notice_id):
adoption_notice = AdoptionNotice.objects.get(id=adoption_notice_id)
context = {"adoption_notice": adoption_notice}
@@ -33,6 +54,7 @@ def search(request):
return render(request, 'fellchensammlung/search.html', context=context)
@login_required
def add_adoption(request):
if request.method == 'POST':
form = AdoptionNoticeForm(request.POST, request.FILES)
@@ -45,6 +67,7 @@ def add_adoption(request):
return render(request, 'fellchensammlung/forms/form_add_adoption.html', {'form': form})
@login_required
def add_animal_to_adoption(request, adoption_notice_id):
if request.method == 'POST':
form = AnimalForm(request.POST)