diff --git a/.project-dictionary.txt b/.project-dictionary.txt
index 6c6feaa3d86ff5a5975da0b158ba28556d2fcae5..99df3cae3ca3d45c39d6d2e0126019a26a84e257 100644
--- a/.project-dictionary.txt
+++ b/.project-dictionary.txt
@@ -1,42 +1,63 @@
+activitypub
 Andi
 ASGI
 backoffice
+bigbluebutton
 BIGBLUEBUTTON
 blocktranslate
 clonbares
 CLUBFRIENDS
 Conferencemember
+csrf
+csrfmiddlewaretoken
 datatables
+dect
 derefer
+dereferrer
 Dereferrer
+Disclaimern
 Einlöseseite
+emph
 endblocktranslate
 endfor
 endspaceless
 engelsystem
 exneuland
+favorited
 forloop
 gettz
 Habitatsbeitritt
 Habitatseinladung
 Habitatszuordnung
+Historieneintrag
 htmlhead
+jitsi
 JITSI
 keepalive
 markdownify
+merch
+Merch
 metanav
+mgmt
 msgid
 msgstr
 naturaltime
 nplurals
+orga
 Orga
 pentabarf
 plainui
 pois
 pretix
+Registrierungs
+Registrierungsinformationen
+Registrierungsstart
 renderable
 Roang
+Screensharing
+Shadowbanned
 Shibboleet
+unhide
 Vorlesungsraum
 Vorlesungssaal
 yesno
diff --git a/src/api/locale/de/LC_MESSAGES/django.po b/src/api/locale/de/LC_MESSAGES/django.po
index d20757e677134f55b81bd01b2753b9e9561ac92c..a20b1a464640734f5b28b804a5418f55dc1c59dc 100644
--- a/src/api/locale/de/LC_MESSAGES/django.po
+++ b/src/api/locale/de/LC_MESSAGES/django.po
@@ -18,7 +18,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "SSO__authorize"
-msgstr "Authorisieren von"
+msgstr "Autorisieren von"
 
 msgid "SSO__authorize_scopes"
 msgstr "Die Seite möchte folgendes wissen:"
@@ -33,7 +33,7 @@ msgid "SSO__authorize_accept"
 msgstr "akzeptieren"
 
 msgid "SSO__out_of_band_noscript"
-msgstr "Bitte kopiere nun das Token in das Program, welches die Authentifikation angefragt hat. Du kannst das Token in der Adress Zeile zwischen '#code=' und '&' finden."
+msgstr "Bitte kopiere nun das Token in das Program, welches die Authentifikation angefragt hat. Du kannst das Token in der Adress-Zeile zwischen '#code=' und '&' finden."
 
 msgid "SSO__out_of_band"
 msgstr "Bitte kopiere nun das Token in die Anwendung, welche die Authentifikation angefragt hat."
diff --git a/src/backoffice/forms/assemblies.py b/src/backoffice/forms/assemblies.py
index c05414691b45734120e215a4d769d8d05b75bccd..810ef2452b1d4e0cd64d81ad033f154ebdbb22e3 100644
--- a/src/backoffice/forms/assemblies.py
+++ b/src/backoffice/forms/assemblies.py
@@ -38,7 +38,7 @@ class AssemblyCreateForm(forms.ModelForm):
             self.add_error('disclaimer', _('Assembly__disclaimer-needed'))
 
         if (slug := self.cleaned_data.get('slug')) and Assembly.objects.filter(conference=self._conference, slug=slug).exists():
-            self.add_error('slug', _('Assembly__slug__alreadyexists'))
+            self.add_error('slug', _('Assembly__slug__already_exists'))
 
         # ensure Assembly's conference is set before saving
         self.instance.conference = self._conference
@@ -108,7 +108,7 @@ class AssemblyEditForm(TranslatedFieldsForm):
 
         split_tags = tags.split(',')
         if tags is not None and len(split_tags) == 1 and len(tags.split(' ')) > 2:
-            raise ValidationError(_('Assembly__tags__splitwithcomma'))
+            raise ValidationError(_('Assembly__tags__split_with_comma'))
 
         for tag in split_tags:
             stripped_tag = tag.strip()
@@ -123,7 +123,7 @@ class AssemblyEditForm(TranslatedFieldsForm):
         # slug must not already exist in the conference
         slug = self.cleaned_data.get('slug')
         if slug is not None and Assembly.objects.filter(conference=self.instance.conference, slug=slug).exclude(pk=self.instance.pk).exists():
-            self.add_error('slug', _('Assembly__slug__alreadyexists'))
+            self.add_error('slug', _('Assembly__slug__already_exists'))
 
 
 class AssemblyApplicationAddForm(forms.Form):
@@ -158,4 +158,4 @@ class AssemblyMemberEditForm(forms.ModelForm):
         a = self.instance.assembly
         m = self.instance.member
         if not self.cleaned_data['can_manage_assembly'] and not a.members.exclude(member=m).filter(can_manage_assembly=True):
-            self.add_error('can_manage_assembly', _('AssemblyMember__needamanager'))
+            self.add_error('can_manage_assembly', _('AssemblyMember__need_a_manager'))
diff --git a/src/backoffice/forms/rooms.py b/src/backoffice/forms/rooms.py
index 77e7d009f772d0921bf07e8918ab4256f14c8fec..21d9e911220c4f09ae16b50fa1050f4b09717886 100644
--- a/src/backoffice/forms/rooms.py
+++ b/src/backoffice/forms/rooms.py
@@ -28,7 +28,7 @@ class AssemblyRoomCreateForm(forms.Form):
             return cleaned_data
 
         if self.assembly.rooms.filter(name=cleaned_data['name']).exists():
-            raise ValidationError({'name': _('Room-duplicatename')})
+            raise ValidationError({'name': _('Room__duplicate_name')})
 
         return cleaned_data
 
@@ -74,7 +74,7 @@ class AssemblyRoomCreateGenericForm(AssemblyRoomCreateForm):
 
 
 class AssemblyRoomCreateBigBlueButtonForm(AssemblyRoomCreateForm):
-    capacity = forms.IntegerField(min_value=0, initial=0, label=_('Room-bigbluebutton_capacity'), help_text=_('Room-bigbluebutton_capacity__help'))
+    capacity = forms.IntegerField(min_value=0, initial=0, label=_('Room__bigbluebutton_capacity'), help_text=_('Room__bigbluebutton_capacity__help'))
 
     def create_room(self, request):
         room = self._create_room(
@@ -99,7 +99,7 @@ class AssemblyRoomCreateHangarForm(AssemblyRoomCreateForm):
         cleaned_data = super().clean(*args, **kwargs)
 
         if not Hangar.can_create_for_assembly(self.assembly):
-            raise ValidationError(_('Room-new-hangar__unavailable'))
+            raise ValidationError(_('Room__new-hangar__unavailable'))
 
         return cleaned_data
 
@@ -134,11 +134,11 @@ class AssemblyRoomEditForm(TranslatedFieldsForm):
         if self.instance.room_type not in Room.TYPES_WITH_CAPACITY:
             del self.fields['capacity']
         elif self.instance.room_type == Room.RoomType.BIGBLUEBUTTON:
-            self.fields['capacity'].label = _('Room-bigbluebutton_capacity')
-            self.fields['capacity'].help_text = _('Room-bigbluebutton_capacity__help')
+            self.fields['capacity'].label = _('Room__bigbluebutton_capacity')
+            self.fields['capacity'].help_text = _('Room__bigbluebutton_capacity__help')
 
             if self.instance.backend_status == Room.BackendStatus.ACTIVE:
-                self.fields['capacity'].help_text += ' ' + _('Room-bigbluebutton__activeroom')
+                self.fields['capacity'].help_text += ' ' + _('Room__bigbluebutton__active_room')
                 self.fields['capacity'].disabled = True
 
         if self.instance.room_type in [Room.RoomType.HANGAR]:
@@ -151,7 +151,7 @@ class AssemblyRoomEditForm(TranslatedFieldsForm):
 
     def clean_name(self):
         if Room.objects.filter(assembly=self.instance.assembly, name=self.cleaned_data['name']).exclude(pk=self.instance.pk).exists():
-            raise ValidationError(_('Room-name-assembly-unique'))
+            raise ValidationError(_('Room__name-assembly-unique'))
 
         # update slug to be based on the new name iff the name changed.
         if self.instance.name != self.cleaned_data['name']:
@@ -173,10 +173,10 @@ class AssemblyRoomEditForm(TranslatedFieldsForm):
         try:
             capacity = int(capacity)
         except ValueError:
-            raise ValidationError(_('Room-capacity-invalid'))
+            raise ValidationError(_('Room__capacity-invalid'))
 
         if capacity < 0:
-            raise ValidationError(_('Room-capacity-negative'))
+            raise ValidationError(_('Room__capacity-negative'))
         return capacity
 
     def save(self, commit=False):
@@ -200,8 +200,8 @@ class AssemblyRoomEditHangarForm(TranslatedFieldsForm):
     def __init__(self, *args, with_capacity: bool = False, schedule_admin: bool = False, **kwargs):
         super().__init__(*args, **kwargs)
         self.fields['backend_status'].disabled = True
-        self.fields['backend_link'].label = _('Room-hangar_backend_link')
-        self.fields['backend_link'].help_text = _('Room-hangar_backend_link__help')
+        self.fields['backend_link'].label = _('Room__hangar_backend_link')
+        self.fields['backend_link'].help_text = _('Room__hangar_backend_link__help')
         self.fields['backend_link'].disabled = True
 
 
diff --git a/src/backoffice/locale/de/LC_MESSAGES/django.po b/src/backoffice/locale/de/LC_MESSAGES/django.po
index 5948482be0a097e1c0224d007121310605c5d0ad..06746f9da1c973c1a4b4e56df9e38b2035888e03 100644
--- a/src/backoffice/locale/de/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/de/LC_MESSAGES/django.po
@@ -20,16 +20,16 @@ msgstr ""
 msgid "Assembly__disclaimer-needed"
 msgstr "Bitte beachte den Hinweis und bestätige, dass du ihn gelesen und verstanden hast."
 
-msgid "Assembly__slug__alreadyexists"
+msgid "Assembly__slug__already_exists"
 msgstr "Dieser Kurzname wird bereits von einer anderen Assembly benutzt."
 
-msgid "Assembly__tags__splitwithcomma"
+msgid "Assembly__tags__split_with_comma"
 msgstr "Mehrere Tags bitte mit einem Komma trennen."
 
 msgid "username"
 msgstr "Benutzername"
 
-msgid "AssemblyMember__needamanager"
+msgid "AssemblyMember__need_a_manager"
 msgstr "Mindestens ein Mitglied muss die Assembly verwalten können!"
 
 msgid "AssemblyTeam__message__subject"
@@ -68,52 +68,52 @@ msgstr "'dd.mm.YYYY HH:MM' oder 'YYYY-mm-dd HH:MM'"
 msgid "Event__room"
 msgstr "Raum"
 
-msgid "Room-duplicatename"
+msgid "Room__duplicate_name"
 msgstr "Ein Raum mit diesem Namen existiert bereits."
 
-msgid "Room-bigbluebutton_capacity"
+msgid "Room__bigbluebutton_capacity"
 msgstr "Teilnehmenden-Limit"
 
-msgid "Room-bigbluebutton_capacity__help"
+msgid "Room__bigbluebutton_capacity__help"
 msgstr "maximale Anzahl an Teilnehmenden, setze 0 für 'kein Limit' (bzw. Server-Limit)"
 
-msgid "Room-new-hangar__unavailable"
+msgid "Room__new-hangar__unavailable"
 msgstr "nur eine Ablage pro Assembly"
 
-msgid "Room-bigbluebutton__activeroom"
+msgid "Room__bigbluebutton__active_room"
 msgstr "Der Raum ist aktiv. BBB unterstützt keine Kapazitätsänderung im laufenden Betrieb :("
 
-msgid "Room-name-assembly-unique"
+msgid "Room__name-assembly-unique"
 msgstr "Raumnamen dürfen innerhalb einer Assembly nicht wiederverwendet werden"
 
-msgid "Room-capacity-invalid"
+msgid "Room__capacity-invalid"
 msgstr "Ungültige Eingabe"
 
-msgid "Room-capacity-negative"
+msgid "Room__capacity-negative"
 msgstr "Raumkapazität darf nicht negativ sein"
 
-msgid "Room-hangar_backend_link"
+msgid "Room__hangar_backend_link"
 msgstr "Hangar-Zugriff"
 
-msgid "Room-hangar_backend_link__help"
+msgid "Room__hangar_backend_link__help"
 msgstr "Private FTP-Zugang um Dateien im Hangar abzulegen"
 
-msgid "activitylog_visibleentries_all"
+msgid "ActivityLog__visible_entries__all"
 msgstr "alle Einträge"
 
-msgid "activitylog_visibleentries_msg"
+msgid "ActivityLog__visible_entries__msg"
 msgstr "nur mit Notiz"
 
-msgid "activitylog_addcomment"
+msgid "ActivityLog_add_comment"
 msgstr "Kommentar (als Log-Eintrag) hinzufügen"
 
 msgid "ActivityLogEntries"
 msgstr "Activity Log Einträge"
 
-msgid "activitylog_addcomment_help"
+msgid "ActivityLog_add_comment_help"
 msgstr "Kommentar, der im Log-Eintrag vermerkt wird (nur für Orga sichtbar):"
 
-msgid "activitylog_addcomment_do"
+msgid "ActivityLog_add_comment_do"
 msgstr "Speichern"
 
 msgid "assembly_children"
@@ -156,7 +156,7 @@ msgstr "Bearbeiten"
 msgid "Invitation__Habitat__action__withdraw"
 msgstr "Zurückziehen"
 
-msgid "assembly_additionalfield_required"
+msgid "Assembly__additional_field__required"
 msgstr "Dieses Feld darf nicht leer bleiben."
 
 msgid "Assembly__authentication"
@@ -195,10 +195,10 @@ msgstr "Client-Typ"
 msgid "Assembly__authentication-grant_type"
 msgstr "Grant-Typ"
 
-msgid "Assembly__authentication__newapp"
+msgid "Assembly__authentication__new_app"
 msgstr "neue Applikation"
 
-msgid "Assembly__authentication__nonpublicassembly"
+msgid "Assembly__authentication__non_public_assembly"
 msgstr "Bitte beachte, dass du die Applikation(en) dieser Assembly noch nicht nutzen kannst weil diese noch nicht freigeschaltet wurde. Das soll dich aber nicht davon abhalten, schon einmal alles zu konfigurieren!"
 
 msgid "save"
@@ -232,7 +232,7 @@ msgid "Badge-renew"
 msgstr "Issuing Token erneuern"
 
 msgid "Badge-assign-api-explanation"
-msgstr "Alternativ kann das Badge auch über einen API-Aufruf einem Nutzer zugeordnet werden. Dazu wird ein Redeem Token und der Usernickname benötigt. Eine spezifische Erklärung ist im HowTo zu finden."
+msgstr "Alternativ kann das Badge auch über einen API-Aufruf einem Nutzer zugeordnet werden. Dazu wird ein Redeem Token und der User-Nickname benötigt. Eine spezifische Erklärung ist im HowTo zu finden."
 
 msgid "Badge__remove"
 msgstr "Badge entfernen"
@@ -341,13 +341,13 @@ msgstr "Nein"
 msgid "Assembly__state"
 msgstr ""
 
-msgid "assemblycreate_title"
+msgid "Assembly__create__title"
 msgstr "Details der neuen Assembly, der Bühne oder des Channels"
 
 msgid "Assembly__registration__closed"
 msgstr "Neue Assembly Anmeldungen für diese Konferenz sind nicht mehr möglich."
 
-msgid "assemblycreate_submitbtn"
+msgid "Assembly__create__submit_btn"
 msgstr "Anlegen & Weiter"
 
 msgid "Assembly__parent_leave_modal__warning__header"
@@ -410,34 +410,34 @@ msgstr "Habitat verlassen"
 msgid "assembly__parent__request"
 msgstr "Antrag auf Beitritt zu einem Habitat"
 
-msgid "assemblyedit_basicdata"
+msgid "Assembly__edit__base_data"
 msgstr "Allgemeine Angaben"
 
-msgid "assemblyedit_readonlybasedata"
+msgid "Assembly__edit__read_only_base_data"
 msgstr "Manche Felder sind schreibgeschützt da die Assembly bereits platziert/verarbeitet wurde."
 
-msgid "assemblyedit_additionalfields"
+msgid "Assembly__edit__additional_fields"
 msgstr "Zusätzliche Angaben"
 
-msgid "assemblyedit_links"
+msgid "Assembly__edit__links"
 msgstr "Befreundete Assemblies"
 
-msgid "assemblyedit_addlink_info"
+msgid "Assembly__edit__link__add_info"
 msgstr "Du kannst andere Assemblies verlinken. Diese Information wird vom Assembly-Team genutzt um deine Assembly möglichst nahe bei den befreundeten Assemblies zu platzieren. Nur bereits akzeptierte Assemblies und Assemblies in denen du Mitglied bist können ausgewählt werden."
 
-msgid "assemblyedit_links__intro"
+msgid "Assembly__edit__links__intro"
 msgstr "Ihr fühlt euch einer anderen Assembly verbunden, möchtet eure Buddies in der Nähe haben? Lasst uns wissen wer sie sind!"
 
-msgid "opensinnewpage"
+msgid "opens_in_new_page"
 msgstr "öffnet in neuem Fenster/Tab"
 
-msgid "assemblyedit_children"
+msgid "Assembly__edit__children"
 msgstr "Zugeordnete Assemblies"
 
-msgid "assemblyedit_submitbtn"
+msgid "Assembly__edit__submit_btn"
 msgstr "Speichern"
 
-msgid "assemblyedit_staffmode"
+msgid "Assembly__edit__staff_mode"
 msgstr "Du bearbeitest diese Assembly in deiner Assembly-Orga-Funktion - mit großer Macht kommt große Verantwortung!"
 
 msgid "Assembly__edit_children__invite_assembly__title"
@@ -452,7 +452,7 @@ msgstr "bitte wählen"
 msgid "Assembly__habitat__invite"
 msgstr "Assembly einladen"
 
-msgid "assemblyedit_addlink"
+msgid "Assembly__edit__link__add"
 msgstr "Bezug zu anderer Assembly herstellen"
 
 msgid "add"
@@ -492,7 +492,7 @@ msgid "Event__delete__submit_text"
 msgstr "Veranstaltung löschen"
 
 msgid "Event__slug"
-msgstr "Veranstaltungs Slug"
+msgstr "Veranstaltungs-Slug"
 
 msgid "Event"
 msgstr "Veranstaltung"
@@ -542,7 +542,7 @@ msgstr "Zeige _MENU_ Einträge"
 msgid "assembly_search"
 msgstr "Suche:"
 
-msgid "assembly_noentries"
+msgid "assembly_no_entries"
 msgstr "Keine Einträge."
 
 msgid "assembly_paginate_first"
@@ -560,11 +560,11 @@ msgstr "Vorherige"
 msgid "Assemblies"
 msgstr ""
 
-msgid "assemblies_filteredtag"
+msgid "assemblies_filtered_tag"
 msgstr "Es werden nur Assemblies mit dem folgenden Tag angezeigt:"
 
 # use translation from core
-msgid "Assembly__hierarchy-cluster"
+msgid "Assembly__hierarchy__cluster"
 msgstr ""
 
 # use translation from core
@@ -643,14 +643,14 @@ msgstr "Raum"
 msgid "Project"
 msgstr "Projekt"
 
-msgid "Room-new"
+msgid "Room__new"
 msgstr "neuer Raum"
 
 msgid "Room__links"
 msgstr "Links"
 
 msgid "RoomLink__introduction"
-msgstr "Hier können Links zu weiteren Inhalten angegeben werden. Bitte beachte, dass externe Inhalte eine Dereferer-Seite vorgeschaltet bekommen. Der Typ des Links wird für besondere Hervorhebungen und u.U. für direkte Einbettung von z.B. Audio- und Video-Streams benutzt."
+msgstr "Hier können Links zu weiteren Inhalten angegeben werden. Bitte beachte, dass externe Inhalte eine Dereferrer-Seite vorgeschaltet bekommen. Der Typ des Links wird für besondere Hervorhebungen und u.U. für direkte Einbettung von z.B. Audio- und Video-Streams benutzt."
 
 msgid "delete"
 msgstr "löschen"
@@ -685,26 +685,26 @@ msgstr "Schöner Raum und auch so hübsch dekoriert. Wirklich in Schutt und Asch
 msgid "Project__remove__confirm"
 msgstr "Nettes Projekt. Alle Spuren davon (zumindest auf dieser Konferenz) verwischen?"
 
-msgid "Project__remove__notpossible"
+msgid "Project__remove__not_possible"
 msgstr "Hier solltest du das Projekt löschen können aber scheinbar hat das Management etwas dagegen - unklar weswegen. Bitte wende dich an den Support."
 
-msgid "Hangar__remove__notpossible"
+msgid "Hangar__remove__not_possible"
 msgstr "Hangar entfernen benötigt manuelle Interaktion, bitte kontaktiere den Support."
 
-msgid "Room__remove__notpossible"
+msgid "Room__remove__not_possible"
 msgstr "Hier könnte der Raum gelöscht werden, jedoch sind noch Veranstaltungen vorhanden. Lösche zuerst auch diese Veranstaltungen oder entferne die Zuordnung zu diesem Raum."
 
 # use translation from core
 msgid "Vouchers"
 msgstr ""
 
-msgid "assemblyedit__vouchers__explaination"
+msgid "Assembly__edit__vouchers__explanation"
 msgstr "Hier werden für Euch bestimmte Informationen der Orga gelistet, wie zum Beispiel individualisierte Links zu weiteren Systemen oder Zugangscodes. Bitte beachte, dass diese Informationen nicht öffentlich sind und auch nur Verantwortliche der Assembly diese sehen können."
 
-msgid "assemblyedit__vouchers__hidden_data"
+msgid "Assembly__edit__vouchers__hidden_data"
 msgstr "Daten zugeordnet, aber nur für berechtigte Mitglieder der Assembly sichtbar."
 
-msgid "assemblyedit__vouchers__not_assigned"
+msgid "Assembly__edit__vouchers__not_assigned"
 msgstr "(Noch?) Keine Daten zugeordnet."
 
 msgid "Assembly__registration_data"
@@ -716,53 +716,53 @@ msgstr "Deutsch"
 msgid "english"
 msgstr "Englisch"
 
-msgid "assemblyedit_statebtn_registered"
+msgid "Assembly__edit__state_btn_registered"
 msgstr "registriert"
 
-msgid "assemblyedit_statebtn_reject"
+msgid "Assembly__edit__state_btn_reject"
 msgstr "ablehnen"
 
-msgid "assemblyedit_statebtn_accept"
+msgid "Assembly__edit__state_btn_accept"
 msgstr "akzeptieren"
 
-msgid "assemblyedit_statebtn_hidden"
+msgid "Assembly__edit__state_btn_hidden"
 msgstr "verstecken"
 
-msgid "assemblyedit_statebtn_rejected2registered"
+msgid "Assembly__edit__state_btn_rejected2registered"
 msgstr "doch in Erwägung ziehen"
 
-msgid "assemblyedit_statebtn_placed"
+msgid "Assembly__edit__state_btn_placed"
 msgstr "platziert"
 
-msgid "assemblyedit_statebtn_arrived"
+msgid "Assembly__edit__state_btn_arrived"
 msgstr "angekommen (eigene Aussage)"
 
-msgid "assemblyedit_statebtn_confirmed"
+msgid "Assembly__edit__state_btn_confirmed"
 msgstr "angekommen (bestätigt)"
 
-msgid "assemblyedit_statebtn_public2registered"
+msgid "Assembly__edit__state_btn_public2registered"
 msgstr "Veröffentlichung zurücknehmen"
 
-msgid "assemblyteam-editassembly"
+msgid "AssemblyTeam__edit_assembly"
 msgstr "Assembly bearbeiten"
 
-msgid "assemblyteam-message"
+msgid "AssemblyTeam__message"
 msgstr "Nachricht senden"
 
-msgid "assemblyteam_lastnote"
+msgid "AssemblyTeam__lastnote"
 msgstr "letzte Notiz"
 
-msgid "assemblyedit_hierarchy"
+msgid "Assembly__edit__hierarchy"
 msgstr "Hierarchie/Art der Assembly ändern"
 
 # use translation from core
 msgid "Assembly__slug"
 msgstr ""
 
-msgid "assemblyteam_addcomment_field"
+msgid "AssemblyTeam__add_comment_field"
 msgstr "Kommentar für Log-Eintrag (nur für Orga):"
 
-msgid "assemblyedit_position"
+msgid "Assembly__edit__position"
 msgstr "Position bearbeiten"
 
 # use translation from core
@@ -777,25 +777,25 @@ msgstr ""
 msgid "Assembly__location_boundaries"
 msgstr ""
 
-msgid "assemblyedit_position_informassembly"
+msgid "Assembly__edit__position_inform_assembly"
 msgstr "Verwaltende der Assemblies informieren"
 
-msgid "assemblyedit_position_update"
+msgid "Assembly__edit__position_update"
 msgstr "Position aktualisieren"
 
-msgid "assemblyedit_position_recall"
+msgid "Assembly__edit__position_recall"
 msgstr "Veröffentlichung zurücknehmen"
 
-msgid "assemblyedit_position_publish"
+msgid "Assembly__edit__position_publish"
 msgstr "mit Position veröffentlichen"
 
-msgid "assemblyedit_position_save_unpublished"
+msgid "Assembly__edit__position_save_unpublished"
 msgstr "Position vormerken"
 
-msgid "assemblyedit_position_save_unaccepted"
+msgid "Assembly__edit__position_save_unaccepted"
 msgstr "Position für nicht akzeptierte Assembly speichern"
 
-msgid "assemblyedit_state"
+msgid "Assembly__edit__state"
 msgstr "Anmelde-Status der Assembly ändern"
 
 msgid "AssemblyTeam__message__title"
@@ -816,7 +816,7 @@ msgstr "Nachrichten Empfänger"
 msgid "AssemblyTeam__message__send_button"
 msgstr "Nachricht versenden"
 
-msgid "nav_activetab_srmarker"
+msgid "nav_active_tab_sr_marker"
 msgstr "(ausgewählt)"
 
 msgid "title_suffix"
@@ -967,7 +967,7 @@ msgstr "offiziell"
 msgid "Event__last_update"
 msgstr "letzte Änderung"
 
-msgid "myassemblies"
+msgid "my_assemblies"
 msgstr "Meine Assemblies"
 
 msgid "assembly_name"
@@ -976,10 +976,10 @@ msgstr "Name"
 msgid "assembly_state"
 msgstr "Status"
 
-msgid "assemblycreate"
+msgid "assembly_create"
 msgstr "Neue Assembly anmelden"
 
-msgid "assemblycreate_deadlineexceeded"
+msgid "Assembly__create__deadline_exceeded"
 msgstr "Registrierung nicht mehr möglich"
 
 msgid "welcome_text"
@@ -1012,7 +1012,7 @@ msgstr "Hier loggst du dich im Maschinenraum ein. Dieser ist zur Verwaltung <emp
 msgid "login_introduction2"
 msgstr "Der Account den du hier nutzt kannst (nicht: musst) du später für den Zugriff auf die Konferenz-Plattform nutzen sobald du ein Konferenz-Ticket damit verknüpft hast (dafür kommt aus dem Ticket-Tool zu gegebener Zeit ein entsprechender Link)."
 
-msgid "registration_signup"
+msgid "registration_sign_up"
 msgstr "Noch keinen Account?"
 
 msgid "registration_password_reset_link"
@@ -1065,10 +1065,10 @@ msgstr ""
 msgid "moderation__public_link"
 msgstr "öffentliche Ansicht"
 
-msgid "moderation__notpublic"
+msgid "moderation__not_public"
 msgstr "nicht veröffentlicht"
 
-msgid "moderation__assembly__cannotunhide"
+msgid "moderation__assembly__cannot_unhide"
 msgstr "Eine versteckte Assembly muss vom Assembly-Team wieder in den passenden Status zurückversetzt werden (multiple Optionen)."
 
 msgid "Assembly__last_update"
@@ -1200,7 +1200,7 @@ msgid "PlatformUser__shadow_banned"
 msgstr ""
 
 msgid "BulletinBoardEntries"
-msgstr "Boardeinträge"
+msgstr "Board-Einträge"
 
 # use translation from core
 msgid "EventParticipant__is_accepted"
@@ -1321,67 +1321,67 @@ msgstr "Projekt löschen"
 msgid "Project__delete__introduction"
 msgstr "Hiermit wird das Projekt gelöscht und alle Daten gehen verloren. Sicher?"
 
-msgid "Room-new-bbb"
+msgid "Room__new-bbb"
 msgstr "BigBlueButton"
 
-msgid "Room-new-bbb__help"
+msgid "Room__new-bbb__help"
 msgstr "Lege einen Konferenzraum für Audio- und Video-Chat sowie Whiteboards und Screensharing an."
 
-msgid "Room-new-bbb__create"
+msgid "Room__new-bbb__create"
 msgstr "Anlegen"
 
-msgid "Room-new-bbb__unavailable"
+msgid "Room__new-bbb__unavailable"
 msgstr "BBB nicht verfügbar."
 
-msgid "Room-new-hangar"
+msgid "Room__new-hangar"
 msgstr "Hangar beziehen"
 
-msgid "Room-new-hangar__help"
+msgid "Room__new-hangar__help"
 msgstr "Dateiablage für Assembly-Inhalte erstellen."
 
-msgid "Room-new-hangar__create"
+msgid "Room__new-hangar__create"
 msgstr "Anlegen"
 
-msgid "Room-new-lecturehall"
+msgid "Room__new-lecture_hall"
 msgstr "Vorlesungsraum"
 
-msgid "Room-new-lecturehall__help"
+msgid "Room__new-lecture_hall__help"
 msgstr "Biete einen physikalischen Vorlesungssaal für Veranstaltungen an."
 
-msgid "Room-new-lecturehall__create"
+msgid "Room__new-lecture_hall__create"
 msgstr "Haben wir."
 
-msgid "Room-new-lecturehall__unavailable"
+msgid "Room__new-lecture_hall__unavailable"
 msgstr "Anlage derzeit nicht möglich."
 
-msgid "Room-new-stage"
+msgid "Room__new-stage"
 msgstr "Bühne"
 
-msgid "Room-new-stage__help"
+msgid "Room__new-stage__help"
 msgstr "Biete eine physikalische Bühne vor Vorträge an."
 
-msgid "Room-new-stage__create"
+msgid "Room__new-stage__create"
 msgstr "Anbieten"
 
-msgid "Room-new-stage__unavailable"
+msgid "Room__new-stage__unavailable"
 msgstr "Anlage derzeit nicht möglich."
 
-msgid "Room-new-workshop"
+msgid "Room__new-workshop"
 msgstr "Workshop-Raum"
 
-msgid "Room-new-workshop__help"
+msgid "Room__new-workshop__help"
 msgstr "Ein Platz für Workshops: ihr habt da etwas im Angebot?"
 
-msgid "Room-new-workshop__create"
+msgid "Room__new-workshop__create"
 msgstr "Haben wir \\o/"
 
-msgid "Room-new-workshop__unavailable"
+msgid "Room__new-workshop__unavailable"
 msgstr "Anlage derzeit nicht möglich."
 
-msgid "Room-new-other__create"
+msgid "Room__new-other__create"
 msgstr "sonstigen Raum anlegen"
 
-msgid "backoffice_schedules_tabularview"
+msgid "backoffice_schedules_tabular_view"
 msgstr "tabellarische Ansicht"
 
 # use translation from core
@@ -1469,7 +1469,7 @@ msgstr "Event-Daten"
 msgid "Event__edit-publishing"
 msgstr "Veröffentlichung"
 
-msgid "Event__publisheddata-current"
+msgid "Event__published_data__current"
 msgstr "aktuelle Veröffentlichungs-Details"
 
 # use translation from core
@@ -1491,10 +1491,10 @@ msgstr "Self-organized Session löschen"
 msgid "SoS__delete__introduction"
 msgstr "Hiermit wird diese Self-organized Session gelöscht. Wenn du sie nur unsichtbar machen möchtest gibt es weiter oben die Möglichkeit die Self-organized Session zurückzunehmen!"
 
-msgid "StaticPage-lockdrop"
+msgid "StaticPage-lock_drop"
 msgstr "Seitensperre aufheben"
 
-msgid "StaticPage-lockdrop__help"
+msgid "StaticPage-lock_drop__help"
 msgstr "Die Seitensperre wird entfernt. Dies ermöglicht anderen Nutzern das Bearbeiten, wird beim aktuellen Bearbeiter jedoch zu einem Fehler führen!"
 
 msgid "Locks"
@@ -1521,35 +1521,32 @@ msgstr "Zeitpunkt"
 msgid "StaticPageRevision__author"
 msgstr "Autor"
 
-msgid "StaticPage--delete-confirm"
+msgid "StaticPage__delete-confirm"
 msgstr "Diese Seite und zugehörige Historie wirklich löschen?"
 
-msgid "StaticPage--delete-page"
+msgid "StaticPage__delete-page"
 msgstr "Seite löschen"
 
-msgid "StaticPageRevision--delete-confirm"
-msgstr "Diesen Historieneintrag wirklich löschen?"
+msgid "StaticPage__edit__submit_btn"
+msgstr "Speichern"
 
-msgid "StaticPage--revisions"
-msgstr "Versionen"
+msgid "StaticPageRevision__delete-confirm"
+msgstr "Diesen Historieneintrag wirklich löschen?"
 
-msgid "StaticPageRevision--revision"
+msgid "StaticPageRevision__revision"
 msgstr "Version"
 
-msgid "StaticPageRevision--title"
+msgid "StaticPageRevision__title"
 msgstr "Titel"
 
-msgid "StaticPageRevision--author"
-msgstr "Author"
-
-msgid "StaticPageRevision--date"
+msgid "StaticPageRevision__date"
 msgstr "Datum"
 
-msgid "StaticPageRevision--delete"
+msgid "StaticPageRevision__delete"
 msgstr "Historieneintrag löschen"
 
 #, python-format
-msgid "StaticPage--preview %(object.public_revision)s"
+msgid "StaticPage__preview %(object.public_revision)s"
 msgstr "Aktuell veröffentlichte Version: %(object.public_revision)s"
 
 msgid "StaticPage__last_edited_by"
@@ -1579,10 +1576,10 @@ msgstr "Passwortwiederherstellungslink ungültig. Bitte erneut versuchen."
 msgid "password_reset_btn"
 msgstr "Ändern"
 
-msgid "registration_signup_title"
+msgid "registration_sign_up_title"
 msgstr "Account anlegen"
 
-msgid "registration_signup_btn"
+msgid "registration_sign_up_btn"
 msgstr "Registrieren"
 
 msgid "registration_reset_password_complete_title"
@@ -1600,51 +1597,51 @@ msgstr "Passwortwiederherstellung"
 msgid "registration_reset_password_done"
 msgstr "Account angelegt"
 
-msgid "registration_reset_password_mailsent"
+msgid "registration_reset_password_mail_sent"
 msgstr "Eine E-Mail mit einem Wiederherstellungs-Link wurde an die angegebene E-Mail-Adresse gesendet. Bitte prüfe deine Inbox und öffne den in der Mail enthaltenen Link um deinen Account zu wiederherzustellen."
 
-msgid "registration_signup_done"
+msgid "registration_sign_up_done"
 msgstr "Account angelegt"
 
-msgid "registration_signup_mailsent"
+msgid "registration_sign_up_mail_sent"
 msgstr "Eine E-Mail mit einem Aktivierungs-Link wurde an die angegebene E-Mail-Adresse gesendet. Bitte prüfe deine Inbox und öffne den in der Mail enthaltenen Link um deinen Account zu aktivieren."
 
 msgid "assembly__created"
 msgstr "Assembly wurde angelegt. Bitte fülle die weiteren Felder aus um die Registrierung abzuschließen."
 
-msgid "assemblyedit_cfintbelowmin"
+msgid "Assembly__edit__cf_int_below_min"
 msgstr "Der Wert des Feldes war zu klein, er wurde auf den kleinstmöglichen Wert geändert:"
 
-msgid "assemblyedit_cfintabovemax"
+msgid "Assembly__edit__cf_int_above_max"
 msgstr "Der Wert des Feldes war zu groß, er wurde auf den größtmöglichen Wert reduziert:"
 
-msgid "assemblyedit_cfinterror"
+msgid "Assembly__edit__cf_int_error"
 msgstr "Wert des Feldes ist keine Zahl, wurde entfernt:"
 
-msgid "assemblyedit_cfdateerror"
+msgid "Assembly__edit__cf_date_error"
 msgstr "Der Wert des Feldes war keine lesbare Datumsangabe:"
 
-msgid "assemblyedit_cfdaterangeerror"
+msgid "Assembly__edit__cf_date_range_error"
 msgstr "Das gewählte Datum lag außerhalb des gültigen Bereichs, es wurde angepasst:"
 
-msgid "assemblyedit_cfoption_missingdetails"
+msgid "Assembly__edit__cf_option_missing_details"
 msgstr "Fehlende Details bei einem Feld:"
 
-msgid "assemblyedit__success"
+msgid "Assembly__edit__success"
 msgstr "Deine Assembly-Anmeldung wurde aktualisiert. Vielen Dank!"
 
 #, python-format
 msgid "AssemblyLink__assembly__not_found %s"
 msgstr "Die Assembly ‚%s‘ konnte nicht gefunden werden, der Link kann nicht hinzugefügt werden!"
 
-msgid "assemblyedit_addedlink"
+msgid "Assembly__edit__link__added"
 msgstr "Bezug zur Assembly '{linked_name}' wurde vermerkt."
 
 #, python-format
 msgid "AssemblyLink__link__not_found %s"
 msgstr "Konnte den Link mit der ID ‚%s‘ nicht finden, kann nicht entfernt werden!"
 
-msgid "assemblyedit_removedlink"
+msgid "Assembly__edit__link__removed"
 msgstr "Bezug zur Assembly '{linked_name}' wurde entfernt."
 
 msgid "Assembly__parent_leave__msg_no_parent"
@@ -1654,10 +1651,10 @@ msgstr "Konnte Habitat nicht verlassen, da derzeit die Assembly derzeit mit kein
 msgid "Assembly__parent_leave__msg_success {name}"
 msgstr "Habitat '{name}' wurde erfolgreich verlassen!"
 
-msgid "Application__newclientsecret"
+msgid "Application__new_client_secret"
 msgstr "Für die OAuth2-Applikation wurde ein \"Client Secret\" generiert, dieses wird nur einmal angezeigt daher merke es dir gut!"
 
-msgid "Assembly__authentication__newtoken"
+msgid "Assembly__authentication__new_token"
 msgstr "Ein neues Token für \"{assembly}\" wurde erstellt, an der API zu verwenden mit \"Authorization: Token {token}\"."
 
 msgid "updated"
@@ -1694,7 +1691,7 @@ msgstr "Unbekannter Benutzer"
 msgid "No %(verbose_name)s found matching the query"
 msgstr "Kein %(verbose_name)s für die gewünschte Abfrage gefunden."
 
-msgid "Room-new-hangar__legal_hint"
+msgid "Room__new-hangar__legal_hint"
 msgstr "Du bestätigst, dass ihr ausschließlich nur solche Inhalte ablegt/veröffentlicht, für die ihr auch die nötigen Lizenzen/Rechte habt. Zuwiderhandlungen können ggf. straf- bzw. zivilrechtliche Folgen haben!"
 
 msgid "internal_error_please_retry"
@@ -1737,7 +1734,7 @@ msgstr "versteckt"
 msgid "lists"
 msgstr "Listen"
 
-msgid "assemblyteam_addcomment_success"
+msgid "AssemblyTeam__add_comment_success"
 msgstr "Kommentar wurde als Log-Eintrag gespeichert."
 
 # use translation from core
@@ -1749,13 +1746,13 @@ msgstr ""
 msgid "Assembly__{fld}"
 msgstr ""
 
-msgid "assemblyedit_changedstate"
+msgid "Assembly__edit__changed_state"
 msgstr "Status der Assembly wurde geändert."
 
-msgid "assemblyedit_clusterstillhaschildren"
+msgid "Assembly__edit__cluster_still_has_children"
 msgstr "Das Habitat hat noch zugeordnete Assemblies. Bitte trenne diese Zuordnung bevor du das Habitat auflöst."
 
-msgid "assemblyedit_changedhierarchy"
+msgid "Assembly__edit__changed_hierarchy"
 msgstr "Hierarchie der Assembly wurde geändert."
 
 # artefact, ignore
@@ -1763,19 +1760,19 @@ msgstr "Hierarchie der Assembly wurde geändert."
 msgid "Assembly__hierarchy-{new_value}"
 msgstr ""
 
-msgid "assemblyedit_position_error"
+msgid "Assembly__edit__position_error"
 msgstr "Es gab einen Fehler beim Parsen der Position, bitte erneut probieren."
 
-msgid "assemblyedit_position_missingonpublish"
+msgid "Assembly__edit__position_missing_on_publish"
 msgstr "Veröffentlichung abgebrochen: keine Positionsdaten gefunden"
 
-msgid "assemblyedit_position_wasnotpublished"
+msgid "Assembly__edit__position_was_not_published"
 msgstr "Die Assembly war gar nicht veröffentlicht?!"
 
-msgid "assemblyedit_position_unknownaction"
-msgstr "Unbekannte Aktion, Lokation wurde dennoch gespeichert."
+msgid "Assembly__edit__position_unknown_action"
+msgstr "Unbekannte Aktion, Position wurde dennoch gespeichert."
 
-msgid "assemblyedit_changedposition"
+msgid "Assembly__edit__changed_position"
 msgstr "Position der Assembly wurde aktualisiert"
 
 #, python-format
@@ -1897,24 +1894,24 @@ msgstr "Self-organized Session %(event_name)s gelöscht"
 
 #, python-format
 msgid "Invitation__updated__message %(requester)s %(requested)s"
-msgstr "Die Einldung von \"%(requester)s\" an \"%(requested)s\" ist aktualisiert worden"
+msgstr "Die Einladung von \"%(requester)s\" an \"%(requested)s\" ist aktualisiert worden"
 
 #, python-format
 msgid "Invitation__withdraw__message %(requester)s %(requested)s"
-msgstr "Die Einldung von \"%(requester)s\" an \"%(requested)s\" ist aktualisiert zurückgezogen worden"
+msgstr "Die Einladung von \"%(requester)s\" an \"%(requested)s\" ist aktualisiert zurückgezogen worden"
 
 #, python-format
 msgid "Invitation__accept__message %(requester)s %(requested)s"
-msgstr "Die Einldung von \"%(requester)s\" an \"%(requested)s\" ist akzeptiert worden"
+msgstr "Die Einladung von \"%(requester)s\" an \"%(requested)s\" ist akzeptiert worden"
 
 #, python-format
 msgid "Invitation__rejected__message %(requester)s %(requested)s"
-msgstr "Die Einldung von \"%(requester)s\" an \"%(requested)s\" ist abgelehnt worden"
+msgstr "Die Einladung von \"%(requester)s\" an \"%(requested)s\" ist abgelehnt worden"
 
 msgid "all"
 msgstr "alle"
 
-msgid "backoffice:assembly-organisational-data"
+msgid "backoffice:assembly-organizational-data"
 msgstr "Organisatorisches"
 
 msgid "backoffice:assembly-basic-data"
@@ -1929,7 +1926,7 @@ msgstr "Projekte"
 msgid "PlatformUsers"
 msgstr "Nutzer"
 
-msgid "userprofile_updated"
+msgid "user_profile_updated"
 msgstr "Benutzerprofil aktualisiert"
 
 #, python-format
@@ -1970,14 +1967,14 @@ msgstr "Sperre bestand nicht mehr."
 msgid "Lock-dropped"
 msgstr "Sperre aufgehoben."
 
-msgid "StaticPage--changedmetadata"
+msgid "StaticPage__metadata_changed"
 msgstr "Parameter der Wiki-Seite geändert"
 
-msgid "StaticPage--notchangedmetadata"
+msgid "StaticPage__metadata_not_changed"
 msgstr "Änderung der Parameter der Wiki-Seite fehlgeschlagen"
 
-msgid "StaticPage--deleted"
+msgid "StaticPage__deleted"
 msgstr "Statische Seite und zugehörige Historie gelöscht."
 
-msgid "StaticPageRevision--deleted"
+msgid "StaticPageRevision__deleted"
 msgstr "Historieneintrag gelöscht."
diff --git a/src/backoffice/locale/en/LC_MESSAGES/django.po b/src/backoffice/locale/en/LC_MESSAGES/django.po
index a8eeb8309f72f9f4bd3e2f4b61cd553c661e298e..a4b025880cb66e0aa5f47198edd89becaf17c14b 100644
--- a/src/backoffice/locale/en/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/en/LC_MESSAGES/django.po
@@ -20,16 +20,16 @@ msgstr ""
 msgid "Assembly__disclaimer-needed"
 msgstr "Please read the disclaimer and acknowledge that you have understood and will adhere to it."
 
-msgid "Assembly__slug__alreadyexists"
+msgid "Assembly__slug__already_exists"
 msgstr "This slug is already used by another assembly."
 
-msgid "Assembly__tags__splitwithcomma"
+msgid "Assembly__tags__split_with_comma"
 msgstr "Split multiple tags by comma."
 
 msgid "username"
 msgstr ""
 
-msgid "AssemblyMember__needamanager"
+msgid "AssemblyMember__need_a_manager"
 msgstr "At least one member must be able to manage the assembly!"
 
 msgid "AssemblyTeam__message__subject"
@@ -68,52 +68,52 @@ msgstr "YYYY-mm-dd HH:MM"
 msgid "Event__room"
 msgstr "Room"
 
-msgid "Room-duplicatename"
+msgid "Room__duplicate_name"
 msgstr "A room with this name already exists."
 
-msgid "Room-bigbluebutton_capacity"
+msgid "Room__bigbluebutton_capacity"
 msgstr "participant limit"
 
-msgid "Room-bigbluebutton_capacity__help"
+msgid "Room__bigbluebutton_capacity__help"
 msgstr "maximum number of participants, set 0 to disable (or server defaults)"
 
-msgid "Room-new-hangar__unavailable"
+msgid "Room__new-hangar__unavailable"
 msgstr "only one per assembly"
 
-msgid "Room-bigbluebutton__activeroom"
+msgid "Room__bigbluebutton__active_room"
 msgstr "The room is active. BBB doesn't support capacity changes in running rooms :("
 
-msgid "Room-name-assembly-unique"
+msgid "Room__name-assembly-unique"
 msgstr "Room names must be assembly-unique"
 
-msgid "Room-capacity-invalid"
+msgid "Room__capacity-invalid"
 msgstr "invalid value"
 
-msgid "Room-capacity-negative"
+msgid "Room__capacity-negative"
 msgstr "Room capacity cannot be negative"
 
-msgid "Room-hangar_backend_link"
+msgid "Room__hangar_backend_link"
 msgstr "Hangar Access"
 
-msgid "Room-hangar_backend_link__help"
+msgid "Room__hangar_backend_link__help"
 msgstr "your private ftp access to put files on your hangar"
 
-msgid "activitylog_visibleentries_all"
+msgid "ActivityLog__visible_entries__all"
 msgstr "all entries"
 
-msgid "activitylog_visibleentries_msg"
+msgid "ActivityLog__visible_entries__msg"
 msgstr "only w/ note"
 
-msgid "activitylog_addcomment"
+msgid "ActivityLog_add_comment"
 msgstr "add comment as log entry"
 
 msgid "ActivityLogEntries"
 msgstr "activity log entries"
 
-msgid "activitylog_addcomment_help"
+msgid "ActivityLog_add_comment_help"
 msgstr "comment which will be added as a log entry (visible for orga only)"
 
-msgid "activitylog_addcomment_do"
+msgid "ActivityLog_add_comment_do"
 msgstr "save"
 
 msgid "assembly_children"
@@ -156,7 +156,7 @@ msgstr "Edit"
 msgid "Invitation__Habitat__action__withdraw"
 msgstr "Withdraw"
 
-msgid "assembly_additionalfield_required"
+msgid "Assembly__additional_field__required"
 msgstr "This field must not be empty."
 
 msgid "Assembly__authentication"
@@ -195,10 +195,10 @@ msgstr "client type"
 msgid "Assembly__authentication-grant_type"
 msgstr "grant type"
 
-msgid "Assembly__authentication__newapp"
+msgid "Assembly__authentication__new_app"
 msgstr "new application"
 
-msgid "Assembly__authentication__nonpublicassembly"
+msgid "Assembly__authentication__non_public_assembly"
 msgstr "Please note that the OAuth2 applications on this assembly won't work yet as it has not been published yet. Nevertheless, feel free to prepare the config anyways!"
 
 msgid "save"
@@ -341,13 +341,13 @@ msgstr "No"
 msgid "Assembly__state"
 msgstr ""
 
-msgid "assemblycreate_title"
+msgid "Assembly__create__title"
 msgstr "Details of the new assembly/channel/stage"
 
 msgid "Assembly__registration__closed"
 msgstr "New assembly registrations for this conference are no longer possible."
 
-msgid "assemblycreate_submitbtn"
+msgid "Assembly__create__submit_btn"
 msgstr "Create & Next"
 
 msgid "Assembly__parent_leave_modal__warning__header"
@@ -410,34 +410,34 @@ msgstr "leave habitat"
 msgid "assembly__parent__request"
 msgstr "request to join habitat"
 
-msgid "assemblyedit_basicdata"
+msgid "Assembly__edit__base_data"
 msgstr "Basic data"
 
-msgid "assemblyedit_readonlybasedata"
+msgid "Assembly__edit__read_only_base_data"
 msgstr "Some fields cannot be updated any more as this assembly has already been processed."
 
-msgid "assemblyedit_additionalfields"
+msgid "Assembly__edit__additional_fields"
 msgstr "additional data"
 
-msgid "assemblyedit_links"
+msgid "Assembly__edit__links"
 msgstr "Related assemblies"
 
-msgid "assemblyedit_addlink_info"
+msgid "Assembly__edit__link__add_info"
 msgstr "You can link to other assemblies. This information will be used by the assembly team to place your assembly close to befriended ones. Only accepted assemblies and assemblies where you are a member of can be chosen."
 
-msgid "assemblyedit_links__intro"
+msgid "Assembly__edit__links__intro"
 msgstr "You like to be close to your friends? Let us know who they are."
 
-msgid "opensinnewpage"
+msgid "opens_in_new_page"
 msgstr "opens in a new tab or window"
 
-msgid "assemblyedit_children"
+msgid "Assembly__edit__children"
 msgstr "Grouped Assemblies"
 
-msgid "assemblyedit_submitbtn"
+msgid "Assembly__edit__submit_btn"
 msgstr "Save"
 
-msgid "assemblyedit_staffmode"
+msgid "Assembly__edit__staff_mode"
 msgstr "You're editing this assembly utilizing your assembly team permissions. With great power comes great responsibility!"
 
 msgid "Assembly__edit_children__invite_assembly__title"
@@ -452,7 +452,7 @@ msgstr "please select"
 msgid "Assembly__habitat__invite"
 msgstr "Invite assembly"
 
-msgid "assemblyedit_addlink"
+msgid "Assembly__edit__link__add"
 msgstr "Associate with another assembly"
 
 msgid "add"
@@ -542,7 +542,7 @@ msgstr "Show _MENU_ entries"
 msgid "assembly_search"
 msgstr "Search:"
 
-msgid "assembly_noentries"
+msgid "assembly_no_entries"
 msgstr "No entries."
 
 msgid "assembly_paginate_first"
@@ -560,11 +560,11 @@ msgstr "Previous"
 msgid "Assemblies"
 msgstr ""
 
-msgid "assemblies_filteredtag"
+msgid "assemblies_filtered_tag"
 msgstr "Showing only assemblies tagged with:"
 
 # use translation from core
-msgid "Assembly__hierarchy-cluster"
+msgid "Assembly__hierarchy__cluster"
 msgstr ""
 
 # use translation from core
@@ -593,7 +593,7 @@ msgid "Assembly__members"
 msgstr "Members"
 
 msgid "Assembly__members__introduction"
-msgstr "Here you find all members of your assembly, each of them can have one or more roles. Those with role 'official spokesperson' are used as such - they are highlighted in the frontend (if shown publically) and used as contact for orga purposes. It makes sense to have regular members without special roles as well: they can be shown publically as part of this assembly (or not) and their membership permits them to offer a self-organized-session in the context of the assembly."
+msgstr "Here you find all members of your assembly, each of them can have one or more roles. Those with role 'official spokesperson' are used as such - they are highlighted in the frontend (if shown publicly) and used as contact for orga purposes. It makes sense to have regular members without special roles as well: they can be shown publicly as part of this assembly (or not) and their membership permits them to offer a self-organized-session in the context of the assembly."
 
 msgid "AssemblyMember__is_representative"
 msgstr "representative"
@@ -643,14 +643,14 @@ msgstr "room"
 msgid "Project"
 msgstr "project"
 
-msgid "Room-new"
+msgid "Room__new"
 msgstr "new room"
 
 msgid "Room__links"
 msgstr "links"
 
 msgid "RoomLink__introduction"
-msgstr "Here you can add links to additional content. Please note that external content will have a dereferer (disclaimer) page in front of it. The link type is used for highlighting and/or direct embedding of e.g. audio and video streams."
+msgstr "Here you can add links to additional content. Please note that external content will have a dereferrer (disclaimer) page in front of it. The link type is used for highlighting and/or direct embedding of e.g. audio and video streams."
 
 msgid "delete"
 msgstr "delete"
@@ -674,7 +674,7 @@ msgid "Project__remove"
 msgstr "remove project"
 
 msgid "Room__remove__introduction"
-msgstr "This will remove the room so that it is not shown anywhere any more. Any backend ressources allocated will be freed."
+msgstr "This will remove the room so that it is not shown anywhere any more. Any backend resources allocated will be freed."
 
 msgid "Project__remove__introduction"
 msgstr "This removes this project and it will not be shown any more."
@@ -685,26 +685,26 @@ msgstr "Nice room. So much wow. Do you really want to burn it down?"
 msgid "Project__remove__confirm"
 msgstr "You are about to leave no public traces of this project (at least on this conference). Sure?"
 
-msgid "Project__remove__notpossible"
+msgid "Project__remove__not_possible"
 msgstr "Here you should be able to remove the project but management says 'no'. We don't know why either, please contact support."
 
-msgid "Hangar__remove__notpossible"
+msgid "Hangar__remove__not_possible"
 msgstr "Hangar removal needs manual interaction, please contact support."
 
-msgid "Room__remove__notpossible"
+msgid "Room__remove__not_possible"
 msgstr "Here you could remove the room if it hadn't at least one event assigned to it. Please delete all events associated with this room first (or remove the association)."
 
 # use translation from core
 msgid "Vouchers"
 msgstr ""
 
-msgid "assemblyedit__vouchers__explaination"
+msgid "Assembly__edit__vouchers__explanation"
 msgstr "Here you'll find information from the orga, e.g. individual links to other systems or access codes. Please note that these information are not public and only managing staff of your assembly is able to see it."
 
-msgid "assemblyedit__vouchers__hidden_data"
+msgid "Assembly__edit__vouchers__hidden_data"
 msgstr "Data only available to members of the assembly."
 
-msgid "assemblyedit__vouchers__not_assigned"
+msgid "Assembly__edit__vouchers__not_assigned"
 msgstr "No data assigned (yet?)."
 
 msgid "Assembly__registration_data"
@@ -716,53 +716,53 @@ msgstr "german"
 msgid "english"
 msgstr "english"
 
-msgid "assemblyedit_statebtn_registered"
+msgid "Assembly__edit__state_btn_registered"
 msgstr "registered"
 
-msgid "assemblyedit_statebtn_reject"
+msgid "Assembly__edit__state_btn_reject"
 msgstr "reject"
 
-msgid "assemblyedit_statebtn_accept"
+msgid "Assembly__edit__state_btn_accept"
 msgstr "accept"
 
-msgid "assemblyedit_statebtn_hidden"
+msgid "Assembly__edit__state_btn_hidden"
 msgstr "hide"
 
-msgid "assemblyedit_statebtn_rejected2registered"
+msgid "Assembly__edit__state_btn_rejected2registered"
 msgstr "consider it"
 
-msgid "assemblyedit_statebtn_placed"
+msgid "Assembly__edit__state_btn_placed"
 msgstr "placed"
 
-msgid "assemblyedit_statebtn_arrived"
+msgid "Assembly__edit__state_btn_arrived"
 msgstr "arrived (self)"
 
-msgid "assemblyedit_statebtn_confirmed"
+msgid "Assembly__edit__state_btn_confirmed"
 msgstr "arrived (confirmed)"
 
-msgid "assemblyedit_statebtn_public2registered"
+msgid "Assembly__edit__state_btn_public2registered"
 msgstr "recall"
 
-msgid "assemblyteam-editassembly"
+msgid "AssemblyTeam__edit_assembly"
 msgstr "edit assembly"
 
-msgid "assemblyteam-message"
+msgid "AssemblyTeam__message"
 msgstr "send a message"
 
-msgid "assemblyteam_lastnote"
+msgid "AssemblyTeam__lastnote"
 msgstr "latest note"
 
-msgid "assemblyedit_hierarchy"
+msgid "Assembly__edit__hierarchy"
 msgstr "change assembly's categorization"
 
 # use translation from core
 msgid "Assembly__slug"
 msgstr ""
 
-msgid "assemblyteam_addcomment_field"
+msgid "AssemblyTeam__add_comment_field"
 msgstr "comment which will be added to the log entry (visible for orga only)"
 
-msgid "assemblyedit_position"
+msgid "Assembly__edit__position"
 msgstr "placement of the assembly"
 
 # use translation from core
@@ -777,25 +777,25 @@ msgstr ""
 msgid "Assembly__location_boundaries"
 msgstr ""
 
-msgid "assemblyedit_position_informassembly"
+msgid "Assembly__edit__position_inform_assembly"
 msgstr "inform the assembly's management"
 
-msgid "assemblyedit_position_update"
+msgid "Assembly__edit__position_update"
 msgstr "update position"
 
-msgid "assemblyedit_position_recall"
+msgid "Assembly__edit__position_recall"
 msgstr "recall the assembly"
 
-msgid "assemblyedit_position_publish"
+msgid "Assembly__edit__position_publish"
 msgstr "publish the assembly"
 
-msgid "assemblyedit_position_save_unpublished"
+msgid "Assembly__edit__position_save_unpublished"
 msgstr "save location (w/o publish)"
 
-msgid "assemblyedit_position_save_unaccepted"
+msgid "Assembly__edit__position_save_unaccepted"
 msgstr "save location for yet-unaccepted assembly"
 
-msgid "assemblyedit_state"
+msgid "Assembly__edit__state"
 msgstr "change assembly's registration state"
 
 msgid "AssemblyTeam__message__title"
@@ -816,7 +816,7 @@ msgstr "message recipients"
 msgid "AssemblyTeam__message__send_button"
 msgstr "Send the message"
 
-msgid "nav_activetab_srmarker"
+msgid "nav_active_tab_sr_marker"
 msgstr "(current)"
 
 msgid "title_suffix"
@@ -968,7 +968,7 @@ msgstr "official"
 msgid "Event__last_update"
 msgstr "last update"
 
-msgid "myassemblies"
+msgid "my_assemblies"
 msgstr "my assemblies"
 
 msgid "assembly_name"
@@ -977,10 +977,10 @@ msgstr "Name"
 msgid "assembly_state"
 msgstr "Status"
 
-msgid "assemblycreate"
+msgid "assembly_create"
 msgstr "create new assembly"
 
-msgid "assemblycreate_deadlineexceeded"
+msgid "Assembly__create__deadline_exceeded"
 msgstr "registration deadline exceeded"
 
 msgid "welcome_text"
@@ -1013,7 +1013,7 @@ msgstr "This is the access to the backoffice aka \"engine room\". Its purpose is
 msgid "login_introduction2"
 msgstr "Your account here can be used to access the conference's platform (but you don't need to). To access the platform/frontend you need to have an activation link which is supplied by the ticket tool in due time."
 
-msgid "registration_signup"
+msgid "registration_sign_up"
 msgstr "No account yet?"
 
 msgid "registration_password_reset_link"
@@ -1066,10 +1066,10 @@ msgstr ""
 msgid "moderation__public_link"
 msgstr "public link"
 
-msgid "moderation__notpublic"
+msgid "moderation__not_public"
 msgstr "not public"
 
-msgid "moderation__assembly__cannotunhide"
+msgid "moderation__assembly__cannot_unhide"
 msgstr "A hidden assembly can only be reversed by the assembly team as there are multiple valid states/types."
 
 msgid "Assembly__last_update"
@@ -1326,67 +1326,67 @@ msgstr "remove project"
 msgid "Project__delete__introduction"
 msgstr "This removes this project and it will not be shown any more."
 
-msgid "Room-new-bbb"
+msgid "Room__new-bbb"
 msgstr "BigBlueButton"
 
-msgid "Room-new-bbb__help"
-msgstr "Create an online room for audio and video chat, whiteboard and screensharing capabilities."
+msgid "Room__new-bbb__help"
+msgstr "Create an online room for audio and video chat, whiteboard and screen sharing capabilities."
 
-msgid "Room-new-bbb__create"
+msgid "Room__new-bbb__create"
 msgstr "create"
 
-msgid "Room-new-bbb__unavailable"
+msgid "Room__new-bbb__unavailable"
 msgstr "BBB not available"
 
-msgid "Room-new-hangar"
+msgid "Room__new-hangar"
 msgstr "Hangar"
 
-msgid "Room-new-hangar__help"
+msgid "Room__new-hangar__help"
 msgstr "Configure a file storage for your assembly."
 
-msgid "Room-new-hangar__create"
+msgid "Room__new-hangar__create"
 msgstr "create"
 
-msgid "Room-new-lecturehall"
+msgid "Room__new-lecture_hall"
 msgstr "lecture hall"
 
-msgid "Room-new-lecturehall__help"
+msgid "Room__new-lecture_hall__help"
 msgstr "Can you provide a physical lecture hall for talks and presentations?"
 
-msgid "Room-new-lecturehall__create"
+msgid "Room__new-lecture_hall__create"
 msgstr "offer one"
 
-msgid "Room-new-lecturehall__unavailable"
+msgid "Room__new-lecture_hall__unavailable"
 msgstr "not available"
 
-msgid "Room-new-stage"
+msgid "Room__new-stage"
 msgstr "stage"
 
-msgid "Room-new-stage__help"
+msgid "Room__new-stage__help"
 msgstr "You have a physical stage which can be used for presentations?"
 
-msgid "Room-new-stage__create"
+msgid "Room__new-stage__create"
 msgstr "offer it"
 
-msgid "Room-new-stage__unavailable"
+msgid "Room__new-stage__unavailable"
 msgstr "not available"
 
-msgid "Room-new-workshop"
+msgid "Room__new-workshop"
 msgstr "workshop room"
 
-msgid "Room-new-workshop__help"
+msgid "Room__new-workshop__help"
 msgstr "Do you have a physical place for workshops to offer?"
 
-msgid "Room-new-workshop__create"
+msgid "Room__new-workshop__create"
 msgstr "yes we do"
 
-msgid "Room-new-workshop__unavailable"
+msgid "Room__new-workshop__unavailable"
 msgstr "not available"
 
-msgid "Room-new-other__create"
+msgid "Room__new-other__create"
 msgstr "create other room"
 
-msgid "backoffice_schedules_tabularview"
+msgid "backoffice_schedules_tabular_view"
 msgstr "tabular view"
 
 # use translation from core
@@ -1474,7 +1474,7 @@ msgstr "event data"
 msgid "Event__edit-publishing"
 msgstr "publishing"
 
-msgid "Event__publisheddata-current"
+msgid "Event__published_data__current"
 msgstr "currently published data"
 
 # use translation from core
@@ -1482,7 +1482,7 @@ msgid "Event__location"
 msgstr ""
 
 msgid "Event__room__none"
-msgstr "The selected room is not available (in the given timeframe)."
+msgstr "The selected room is not available (in the given time-frame)."
 
 msgid "Event__room__choose"
 msgstr "choose room"
@@ -1496,10 +1496,10 @@ msgstr "Delete self-organized session"
 msgid "SoS__delete__introduction"
 msgstr "This removes this self-organized session. If you only want to make it invisible, there is an option above to recall the self-organized session above!"
 
-msgid "StaticPage-lockdrop"
+msgid "StaticPage-lock_drop"
 msgstr "drop page lock"
 
-msgid "StaticPage-lockdrop__help"
+msgid "StaticPage-lock_drop__help"
 msgstr "The lock on the wiki page will be removed. This enables other users to edit the page but will result in an error for the current lock holder."
 
 msgid "Locks"
@@ -1527,35 +1527,32 @@ msgstr "timestamp"
 msgid "StaticPageRevision__author"
 msgstr "author"
 
-msgid "StaticPage--delete-confirm"
+msgid "StaticPage__delete-confirm"
 msgstr "Are you sure you want to remove this Static Page? All revisions and all stored history will be removed as well!"
 
-msgid "StaticPage--delete-page"
+msgid "StaticPage__delete-page"
 msgstr "Delete Page"
 
-msgid "StaticPageRevision--delete-confirm"
-msgstr "Are you sure you want to remove this Static Page Revision?"
+msgid "StaticPage__edit__submit_btn"
+msgstr "Save"
 
-msgid "StaticPage--revisions"
-msgstr "Versions"
+msgid "StaticPageRevision__delete-confirm"
+msgstr "Are you sure you want to remove this Static Page Revision?"
 
-msgid "StaticPageRevision--revision"
+msgid "StaticPageRevision__revision"
 msgstr "Version"
 
-msgid "StaticPageRevision--title"
+msgid "StaticPageRevision__title"
 msgstr "Title"
 
-msgid "StaticPageRevision--author"
-msgstr "Author"
-
-msgid "StaticPageRevision--date"
+msgid "StaticPageRevision__date"
 msgstr "Date"
 
-msgid "StaticPageRevision--delete"
+msgid "StaticPageRevision__delete"
 msgstr "Delete Version"
 
 #, python-format
-msgid "StaticPage--preview %(object.public_revision)s"
+msgid "StaticPage__preview %(object.public_revision)s"
 msgstr "Preview of currently published version %(object.public_revision)s"
 
 msgid "StaticPage__last_edited_by"
@@ -1585,10 +1582,10 @@ msgstr "Reset password link invalid. Please try again."
 msgid "password_reset_btn"
 msgstr "Reset"
 
-msgid "registration_signup_title"
+msgid "registration_sign_up_title"
 msgstr "create account"
 
-msgid "registration_signup_btn"
+msgid "registration_sign_up_btn"
 msgstr "Register Account"
 
 msgid "registration_reset_password_complete_title"
@@ -1606,51 +1603,51 @@ msgstr "Reset password"
 msgid "registration_reset_password_done"
 msgstr "Password reset initiated."
 
-msgid "registration_reset_password_mailsent"
+msgid "registration_reset_password_mail_sent"
 msgstr "An email with a password reset link has been sent to the given e-mail address. Please check your inbox and open the link sent to you in order to reset your password."
 
-msgid "registration_signup_done"
+msgid "registration_sign_up_done"
 msgstr "Account created."
 
-msgid "registration_signup_mailsent"
+msgid "registration_sign_up_mail_sent"
 msgstr "An email with an activation link has been sent to the given e-mail address. Please check your inbox and open the link sent to you in order to activate your account."
 
 msgid "assembly__created"
 msgstr "Assembly has been created. Please fill out the following extra information to complete registration."
 
-msgid "assemblyedit_cfintbelowmin"
+msgid "Assembly__edit__cf_int_below_min"
 msgstr "Field's value was too small, it has been changed to the minimal value:"
 
-msgid "assemblyedit_cfintabovemax"
+msgid "Assembly__edit__cf_int_above_max"
 msgstr "Field's value was too large, it has been changed to the maximal value:"
 
-msgid "assemblyedit_cfinterror"
+msgid "Assembly__edit__cf_int_error"
 msgstr "Field's value was not a number, removed:"
 
-msgid "assemblyedit_cfdateerror"
+msgid "Assembly__edit__cf_date_error"
 msgstr "Field's value was not a valid date:"
 
-msgid "assemblyedit_cfdaterangeerror"
-msgstr "The chosen date was outside the allowed timeframe, it has been modified to fit:"
+msgid "Assembly__edit__cf_date_range_error"
+msgstr "The chosen date was outside the allowed time-frame, it has been modified to fit:"
 
-msgid "assemblyedit_cfoption_missingdetails"
+msgid "Assembly__edit__cf_option_missing_details"
 msgstr "missing details on a field:"
 
-msgid "assemblyedit__success"
+msgid "Assembly__edit__success"
 msgstr "assembly's registration details have been updated. Thanks!"
 
 #, python-format
 msgid "AssemblyLink__assembly__not_found %s"
 msgstr "The assembly '%s' could not be found, unable to add!"
 
-msgid "assemblyedit_addedlink"
+msgid "Assembly__edit__link__added"
 msgstr "Association with assembly '{linked_name}' has been saved."
 
 #, python-format
 msgid "AssemblyLink__link__not_found %s"
 msgstr "Cannot find the linke with the id '%s', unable to remove!"
 
-msgid "assemblyedit_removedlink"
+msgid "Assembly__edit__link__removed"
 msgstr "Association with assembly '{linked_name}' has been deleted."
 
 msgid "Assembly__parent_leave__msg_no_parent"
@@ -1660,23 +1657,23 @@ msgstr "Cannot leave habitat, not currently associated with one!"
 msgid "Assembly__parent_leave__msg_success {name}"
 msgstr "Successfully left the habitat {name}!"
 
-msgid "Application__newclientsecret"
+msgid "Application__new_client_secret"
 msgstr "For the OAuth2 application a new \"client secret\" has been generated. It will only be shown once, so please note it down!"
 
-msgid "Assembly__authentication__newtoken"
+msgid "Assembly__authentication__new_token"
 msgstr "A new token for \"{assembly}\" has been generated, use it on the API with \"Authorization: Token {token}\"."
 
 msgid "updated"
 msgstr "Entry has been updated."
 
 msgid "Assembly__members__hidden"
-msgstr "\"{user}\" will not be shown publically any more"
+msgstr "\"{user}\" will not be shown publicly any more"
 
 msgid "Assembly__members__no_member_cant_display"
 msgstr "\"{user}\" can not be shown publicly in this conference as they haven't activated their ticket."
 
 msgid "Assembly__members__shown"
-msgstr "\"{user}\" will now be shown publically"
+msgstr "\"{user}\" will now be shown publicly"
 
 msgid "Assembly__members__cant_remove_self"
 msgstr "You can't remove yourself"
@@ -1700,7 +1697,7 @@ msgstr ""
 msgid "No %(verbose_name)s found matching the query"
 msgstr "No %(verbose_name)s found matching the query"
 
-msgid "Room-new-hangar__legal_hint"
+msgid "Room__new-hangar__legal_hint"
 msgstr "You acknowledge that you will only store/publish content to which you own the necessary rights/licenses. Any violation might be liable to prosecution!"
 
 msgid "internal_error_please_retry"
@@ -1720,7 +1717,7 @@ msgstr "Could not remove the room as it has at least one event assigned to it. P
 
 #, python-format
 msgid "Room__remove__success %s"
-msgstr "The romme '%s' was removed!"
+msgstr "The room '%s' was removed!"
 
 msgid "nav_assemblies_all"
 msgstr "all"
@@ -1743,7 +1740,7 @@ msgstr "hidden"
 msgid "lists"
 msgstr "lists"
 
-msgid "assemblyteam_addcomment_success"
+msgid "AssemblyTeam__add_comment_success"
 msgstr "A log entry with the comment has been added."
 
 msgid "UserCommunicationChannel__address"
@@ -1754,13 +1751,13 @@ msgstr ""
 msgid "Assembly__{fld}"
 msgstr ""
 
-msgid "assemblyedit_changedstate"
+msgid "Assembly__edit__changed_state"
 msgstr "Assembly's state has been updated."
 
-msgid "assemblyedit_clusterstillhaschildren"
+msgid "Assembly__edit__cluster_still_has_children"
 msgstr "The habitat still has associated assemblies. Please remove those manually first before demoting the habitat."
 
-msgid "assemblyedit_changedhierarchy"
+msgid "Assembly__edit__changed_hierarchy"
 msgstr "Hierarchy type of the assembly has been changed."
 
 # artefact, ignore
@@ -1768,19 +1765,19 @@ msgstr "Hierarchy type of the assembly has been changed."
 msgid "Assembly__hierarchy-{new_value}"
 msgstr ""
 
-msgid "assemblyedit_position_error"
+msgid "Assembly__edit__position_error"
 msgstr "The given location data could not be parsed."
 
-msgid "assemblyedit_position_missingonpublish"
+msgid "Assembly__edit__position_missing_on_publish"
 msgstr "Could not publish the assembly as there was no location data present."
 
-msgid "assemblyedit_position_wasnotpublished"
+msgid "Assembly__edit__position_was_not_published"
 msgstr "Could not recall the assembly: it was not published?!"
 
-msgid "assemblyedit_position_unknownaction"
+msgid "Assembly__edit__position_unknown_action"
 msgstr "Unknown action requested, location was updated nonetheless."
 
-msgid "assemblyedit_changedposition"
+msgid "Assembly__edit__changed_position"
 msgstr "Location of the assembly was updated."
 
 #, python-format
@@ -1851,7 +1848,7 @@ msgid "Conference__recall__success"
 msgstr "Conference was successfully recalled."
 
 msgid "Conference__create__success"
-msgstr "Conference was successfully crewated."
+msgstr "Conference was successfully created."
 
 msgid "Conference__update__success"
 msgstr "Conference was successfully updated."
@@ -1919,8 +1916,8 @@ msgstr "The invitation from \"%(requester)s\" to \"%(requested)s\" has been reje
 msgid "all"
 msgstr "all"
 
-msgid "backoffice:assembly-organisational-data"
-msgstr "Organisational Data"
+msgid "backoffice:assembly-organizational-data"
+msgstr "Organizational Data"
 
 msgid "backoffice:assembly-basic-data"
 msgstr "Basic Data"
@@ -1934,7 +1931,7 @@ msgstr "Projects"
 msgid "PlatformUsers"
 msgstr "users"
 
-msgid "userprofile_updated"
+msgid "user_profile_updated"
 msgstr "user profile updated"
 
 #, python-format
@@ -1975,14 +1972,14 @@ msgstr "Lock was gone already."
 msgid "Lock-dropped"
 msgstr "Lock dropped successfully."
 
-msgid "StaticPage--changedmetadata"
+msgid "StaticPage__metadata_changed"
 msgstr "changed wiki page's metadata"
 
-msgid "StaticPage--notchangedmetadata"
+msgid "StaticPage__metadata_not_changed"
 msgstr "failed to change metadata of wiki page"
 
-msgid "StaticPage--deleted"
+msgid "StaticPage__deleted"
 msgstr "StaticPage and all corresponding revisions deleted."
 
-msgid "StaticPageRevision--deleted"
+msgid "StaticPageRevision__deleted"
 msgstr "StaticPageRevision deleted."
diff --git a/src/backoffice/templates/backoffice/activitylog_card.html b/src/backoffice/templates/backoffice/activitylog_card.html
index 7e4d50eb530ae406f07ac6a45ea900fc9148eae8..97951263b91bfe5f8da39fc2a91c1d3c516b69ea 100644
--- a/src/backoffice/templates/backoffice/activitylog_card.html
+++ b/src/backoffice/templates/backoffice/activitylog_card.html
@@ -18,7 +18,7 @@
                    autocomplete="off"
                    checked>
             <label class="btn btn-sm btn-outline-primary"
-                   for="visible_logentries_all_{{ alc_ident }}">{% trans "activitylog_visibleentries_all" %}</label>
+                   for="visible_logentries_all_{{ alc_ident }}">{% trans "ActivityLog__visible_entries__all" %}</label>
 
             <input type="radio"
                    class="btn-check"
@@ -26,11 +26,11 @@
                    id="visible_logentries_msg_{{ alc_ident }}"
                    autocomplete="off">
             <label class="btn btn-sm btn-outline-primary"
-                   for="visible_logentries_msg_{{ alc_ident }}">{% trans "activitylog_visibleentries_msg" %}</label>
+                   for="visible_logentries_msg_{{ alc_ident }}">{% trans "ActivityLog__visible_entries__msg" %}</label>
           </div>
           {% if add_comment_url %}
             <button class="btn btn-sm btn-primary"
-                    title="{% trans "activitylog_addcomment" %}"
+                    title="{% trans "ActivityLog_add_comment" %}"
                     data-bs-toggle="modal"
                     data-bs-target="#addCommentModal_{{ alc_ident }}">
               <i class="bi bi-chat-left-text"></i>
@@ -87,15 +87,15 @@
     <div class="modal-dialog">
       <div class="modal-content">
         <div class="modal-header">
-          <h1 class="modal-title fs-5" id="addCommentModalLabel">{% trans "activitylog_addcomment" %}</h1>
+          <h1 class="modal-title fs-5" id="addCommentModalLabel">{% trans "ActivityLog_add_comment" %}</h1>
           <button type="button"
                   class="btn-close"
                   data-bs-dismiss="modal"
                   aria-label="Close"></button>
         </div>
         <div class="modal-body">
-          <p>{% trans "activitylog_addcomment_help" %}</p>
-          <form id="addcomment_{{ alc_ident }}"
+          <p>{% trans "ActivityLog_add_comment_help" %}</p>
+          <form id="add_comment_{{ alc_ident }}"
                 action="{{ add_comment_url }}"
                 method="post">
             {% csrf_token %}
@@ -103,8 +103,8 @@
           </form>
         </div>
         <div class="modal-footer">
-          <button class="btn btn-primary" form="addcomment_{{ alc_ident }}">
-            <i class="bi bi-chat-left-text"></i> {% trans "activitylog_addcomment_do" %}
+          <button class="btn btn-primary" form="add_comment_{{ alc_ident }}">
+            <i class="bi bi-chat-left-text"></i> {% trans "ActivityLog_add_comment_do" %}
           </button>
         </div>
       </div>
diff --git a/src/backoffice/templates/backoffice/assembly_additionalfields.html b/src/backoffice/templates/backoffice/assembly_additionalfields.html
index cbb511f461f7875d0aaa03252bdf02bfb7376e2d..2cdf6e09c50007fdd074375188a0468f904da701 100644
--- a/src/backoffice/templates/backoffice/assembly_additionalfields.html
+++ b/src/backoffice/templates/backoffice/assembly_additionalfields.html
@@ -121,7 +121,7 @@
         {% endif %}
 
         {% if field.required and value|default:'' == '' %}
-          <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "assembly_additionalfield_required" %}</div>
+          <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "Assembly__additional_field__required" %}</div>
         {% endif %}
       </div>
     {% endwith %}
diff --git a/src/backoffice/templates/backoffice/assembly_auth.html b/src/backoffice/templates/backoffice/assembly_auth.html
index f243038821fe38c9bc68f23c98147f171a3046d2..0a3ab4406a526b775d825456fdc504c5e6b1ccc2 100644
--- a/src/backoffice/templates/backoffice/assembly_auth.html
+++ b/src/backoffice/templates/backoffice/assembly_auth.html
@@ -88,7 +88,7 @@
               <label for="id_grant_type">{% trans "Assembly__authentication-grant_type" %}</label>
             </div>
             <div class="col-12">
-              <button type="submit" class="btn btn-sm btn-primary">{% trans "Assembly__authentication__newapp" %}</button>
+              <button type="submit" class="btn btn-sm btn-primary">{% trans "Assembly__authentication__new_app" %}</button>
             </div>
           </form>
         </div>
diff --git a/src/backoffice/templates/backoffice/assembly_auth_app.html b/src/backoffice/templates/backoffice/assembly_auth_app.html
index 4bf8556c10fa8f9008ac5f902b171af56df370c5..639af471e98d9980104756aab8ace951812df164 100644
--- a/src/backoffice/templates/backoffice/assembly_auth_app.html
+++ b/src/backoffice/templates/backoffice/assembly_auth_app.html
@@ -12,7 +12,7 @@
   {% show_disclaimer "assembly_auth" %}
 
   {% if not assembly.is_public %}
-    <div class="alert alert-warning">{% trans "Assembly__authentication__nonpublicassembly" %}</div>
+    <div class="alert alert-warning">{% trans "Assembly__authentication__non_public_assembly" %}</div>
   {% endif %}
 
   <div class="row">
diff --git a/src/backoffice/templates/backoffice/assembly_basicdata.html b/src/backoffice/templates/backoffice/assembly_base_data.html
similarity index 100%
rename from src/backoffice/templates/backoffice/assembly_basicdata.html
rename to src/backoffice/templates/backoffice/assembly_base_data.html
diff --git a/src/backoffice/templates/backoffice/assembly_create.html b/src/backoffice/templates/backoffice/assembly_create.html
index fcedd63627a2c9cc570eaacab931e78e8f323612..fae4e0181558542ee461297af7aedc7cb635ac02 100644
--- a/src/backoffice/templates/backoffice/assembly_create.html
+++ b/src/backoffice/templates/backoffice/assembly_create.html
@@ -4,7 +4,7 @@
 
 {% block content %}
   <div class="card">
-    <div class="card-header">{% trans "assemblycreate_title" %}</div>
+    <div class="card-header">{% trans "Assembly__create__title" %}</div>
     {% if registration_closed %}
       <div class="card-body border border-3 border-danger">{% trans "Assembly__registration__closed" %}</div>
     {% else %}
@@ -14,7 +14,7 @@
           {% bootstrap_form form %}
           <button type="submit"
                   class="btn btn-primary"
-                  {% if registration_closed %}disabled{% endif %}>{% trans "assemblycreate_submitbtn" %}</button>
+                  {% if registration_closed %}disabled{% endif %}>{% trans "Assembly__create__submit_btn" %}</button>
         </form>
       </div>
     {% endif %}
diff --git a/src/backoffice/templates/backoffice/assembly_edit.html b/src/backoffice/templates/backoffice/assembly_edit.html
index 612f13b4ad3c606b9e6188cafe7181216994be12..4e6d951c26d3d63d20428c6a4d2b27fa4a356b9e 100644
--- a/src/backoffice/templates/backoffice/assembly_edit.html
+++ b/src/backoffice/templates/backoffice/assembly_edit.html
@@ -22,15 +22,15 @@
     <div class="row">
       <div class="col-md-12">
         <div class="card mb-3">
-          <div class="card-header">{% trans "assemblyedit_basicdata" %}</div>
+          <div class="card-header">{% trans "Assembly__edit__base_data" %}</div>
           <div class="card-body">
             {% if assembly.basedata_readonly %}
               <div class="alert alert-warning"
                    {% if staff_access %}style="text-decoration: line-through;"{% endif %}>
-                {% trans "assemblyedit_readonlybasedata" %}
+                {% trans "Assembly__edit__read_only_base_data" %}
               </div>
             {% endif %}
-            {% include "backoffice/assembly_basicdata.html" %}
+            {% include "backoffice/assembly_base_data.html" %}
           </div>
         </div>
       </div>
@@ -40,9 +40,9 @@
       <div class="row">
         <div class="col-md-12">
           <div class="card mb-3">
-            <div class="card-header">{% trans "assemblyedit_additionalfields" %}</div>
+            <div class="card-header">{% trans "Assembly__edit__additional_fields" %}</div>
             <div class="card-body">
-              {% include "backoffice/assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=assembly.registration_data %}
+              {% include "backoffice/assembly_additional_fields.html" with schema=conference.get_additional_fields_schema data=assembly.registration_data %}
             </div>
           </div>
         </div>
@@ -54,11 +54,11 @@
         <div class="card">
           {% if not assembly.is_cluster %}
             <div class="card-header">
-              {% trans "assemblyedit_links" %} <i title="{% trans "assemblyedit_addlink_info" %}"
+              {% trans "Assembly__edit__links" %} <i title="{% trans "Assembly__edit__link__add_info" %}"
     class="bi bi-info-circle-fill text-primary"></i>
             </div>
             <div class="card-body">
-              <p>{% trans "assemblyedit_links__intro" %}</p>
+              <p>{% trans "Assembly__edit__links__intro" %}</p>
               {% with la=assembly.linked_assemblies %}
                 {% if la|length > 0 %}
                   <ul class="list-group">
@@ -78,15 +78,15 @@
               <a class="float-end btn btn-primary"
                  href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}"
                  target="_blank"
-                 title="{% trans "Edit" %}">{% trans "Edit" %} ({% trans "opensinnewpage" %})</a>
+                 title="{% trans "Edit" %}">{% trans "Edit" %} ({% trans "opens_in_new_page" %})</a>
             </div>
           {% else %}
             {# assembly.is_cluster #}
             <div class="card-header">
-              {% trans "assemblyedit_children" %}
+              {% trans "Assembly__edit__children" %}
               <a href="{% url 'backoffice:assembly-editchildren' pk=assembly.pk %}"
                  target="_blank"
-                 title="{% trans "opensinnewpage" %}">({% trans "edit" %})</a>
+                 title="{% trans "opens_in_new_page" %}">({% trans "edit" %})</a>
             </div>
             <div class="card-body">
               {% with children=assembly.children.all %}
@@ -115,7 +115,7 @@
                    type="text"
                    name="tags"
                    value="{% for tag in assembly.sorted_tags %} {{ tag }} {% if not forloop.last %},{% endif %} {% endfor %}">
-            <div for="tags" class="form-text">{% trans "Assembly__tags__splitwithcomma" %}</div>
+            <div for="tags" class="form-text">{% trans "Assembly__tags__split_with_comma" %}</div>
           </div>
         </div>
       </div>
@@ -125,7 +125,7 @@
       <div class="col-md-12">
         <div class="card">
           <div class="card-footer text-end">
-            <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
+            <button type="submit" class="btn btn-primary">{% trans "Assembly__edit__submit_btn" %}</button>
           </div>
         </div>
       </div>
diff --git a/src/backoffice/templates/backoffice/assembly_edit_header.html b/src/backoffice/templates/backoffice/assembly_edit_header.html
index 645aa36b4d56dbec364c9d5ff6b733f3cd43d84f..c6bc4225afe3ffcf9f1157256cdc2c1169ba3f3c 100644
--- a/src/backoffice/templates/backoffice/assembly_edit_header.html
+++ b/src/backoffice/templates/backoffice/assembly_edit_header.html
@@ -1,4 +1,4 @@
 {% load i18n %}
 {% if staff_mode %}
-  <div class="alert alert-info mb-3">{% trans "assemblyedit_staffmode" %}</div>
+  <div class="alert alert-info mb-3">{% trans "Assembly__edit__staff_mode" %}</div>
 {% endif %}
diff --git a/src/backoffice/templates/backoffice/assembly_editlinks.html b/src/backoffice/templates/backoffice/assembly_editlinks.html
index 8449949f8670592bd54c5096cb455cd457534fdd..7e82db87a7b8b7efd63ba8867154aa9bd1770e79 100644
--- a/src/backoffice/templates/backoffice/assembly_editlinks.html
+++ b/src/backoffice/templates/backoffice/assembly_editlinks.html
@@ -19,11 +19,11 @@
       <div class="col-md-12">
         <div class="card mb-3">
           <div class="card-header">
-            {% trans "assemblyedit_addlink" %} <i title="{% trans "assemblyedit_addlink_info" %}"
+            {% trans "Assembly__edit__link__add" %} <i title="{% trans "Assembly__edit__link__add_info" %}"
     class="bi bi-info-circle-fill text-primary"></i>
           </div>
           <div class="card-body">
-            <p>{% trans "assemblyedit_links__intro" %}</p>
+            <p>{% trans "Assembly__edit__links__intro" %}</p>
             <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}"
                   method="post">
               {% csrf_token %}
@@ -44,7 +44,7 @@
     <div class="row pb-10rem">
       <div class="col-md-12">
         <div class="card mb-3">
-          <div class="card-header">{% trans "assemblyedit_links" %}</div>
+          <div class="card-header">{% trans "Assembly__edit__links" %}</div>
           <div class="card-body">
             {% if links|length > 0 %}
               <ul class="list-group">
diff --git a/src/backoffice/templates/backoffice/assembly_events.html b/src/backoffice/templates/backoffice/assembly_events.html
index 103bc5842fa9e2758e58608f80f834da2dea67d7..414c99697a20b43978d60388e648cdca33887903 100644
--- a/src/backoffice/templates/backoffice/assembly_events.html
+++ b/src/backoffice/templates/backoffice/assembly_events.html
@@ -29,7 +29,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/assembly_list.html b/src/backoffice/templates/backoffice/assembly_list.html
index 3824104a00033426ca879adb9b92fd950da6dae8..2105ce2f2bc488f5e32b3d43fc86239092c4e0c4 100644
--- a/src/backoffice/templates/backoffice/assembly_list.html
+++ b/src/backoffice/templates/backoffice/assembly_list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
@@ -53,7 +53,7 @@
 
       {% if filter_tag is not None %}
         <div class="alert alert-info">
-          {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong>
+          {% trans "assemblies_filtered_tag" %}: <strong>{{ filter_tag }}</strong>
         </div>
       {% endif %}
 
@@ -61,7 +61,7 @@
         <thead>
           <tr>
             {% if conference.support_clusters %}
-              <th>{% trans "Assembly__hierarchy-cluster" %}</th>
+              <th>{% trans "Assembly__hierarchy__cluster" %}</th>
             {% endif %}
             <th>{% trans "Assembly__name" %}</th>
             <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th>
diff --git a/src/backoffice/templates/backoffice/assembly_members_edit.html b/src/backoffice/templates/backoffice/assembly_members_edit.html
index 8efb61e9d75f0b619227ccc71da5837a17631434..9d824d7921f41f32f1ad2591939bb22ce8a7d0bb 100644
--- a/src/backoffice/templates/backoffice/assembly_members_edit.html
+++ b/src/backoffice/templates/backoffice/assembly_members_edit.html
@@ -42,7 +42,7 @@
         {% endfor %}
       </div>
       <div class="card-footer text-end">
-        <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
+        <button type="submit" class="btn btn-primary">{% trans "Assembly__edit__submit_btn" %}</button>
       </div>
     </div>
 
diff --git a/src/backoffice/templates/backoffice/assembly_room.html b/src/backoffice/templates/backoffice/assembly_room.html
index 64108c1f90233ad84dd2d7f84ed5338907e773ec..1cabea24c939bd351adde1c60b20ed994f87b14e 100644
--- a/src/backoffice/templates/backoffice/assembly_room.html
+++ b/src/backoffice/templates/backoffice/assembly_room.html
@@ -37,7 +37,7 @@
               {% endif %}
               "{{ room.name }}"
             {% else %}
-              <span class="badge badge-secondary">{% trans "Room-new" %}</span>
+              <span class="badge badge-secondary">{% trans "Room__new" %}</span>
             {% endif %}
           </div>
           {% if not link_edit %}
diff --git a/src/backoffice/templates/backoffice/assembly_room_mgmt.html b/src/backoffice/templates/backoffice/assembly_room_mgmt.html
index 8413d28d06cad2201bb023b264ee529f6a21f971..4eb27f4b231eea1575c74b05dbbdc0d031196449 100644
--- a/src/backoffice/templates/backoffice/assembly_room_mgmt.html
+++ b/src/backoffice/templates/backoffice/assembly_room_mgmt.html
@@ -37,11 +37,11 @@
           {% else %}
             <p>
               {% if room.room_type == 'project' %}
-                {% trans "Project__remove__notpossible" %}
+                {% trans "Project__remove__not_possible" %}
               {% elif room.room_type == 'hangar' %}
-                {% trans "Hangar__remove__notpossible" %}
+                {% trans "Hangar__remove__not_possible" %}
               {% else %}
-                {% trans "Room__remove__notpossible" %}
+                {% trans "Room__remove__not_possible" %}
               {% endif %}
             </p>
           {% endif %}
diff --git a/src/backoffice/templates/backoffice/assembly_vouchers.html b/src/backoffice/templates/backoffice/assembly_vouchers.html
index 746544a45f9bde07494b514288fcf18e2f4e3289..269dba227761f4cca30fdbd57eed4e93c5db69ad 100644
--- a/src/backoffice/templates/backoffice/assembly_vouchers.html
+++ b/src/backoffice/templates/backoffice/assembly_vouchers.html
@@ -13,7 +13,7 @@
     <div class="col-md-12">
       <div class="card border-default">
         <div class="card-header bg-default">{% trans "Vouchers" %}</div>
-        <div class="card-body">{% trans "assemblyedit__vouchers__explaination" %}</div>
+        <div class="card-body">{% trans "Assembly__edit__vouchers__explanation" %}</div>
       </div>
     </div>
   </div>
@@ -30,7 +30,7 @@
             <div>{{ voucher.description }}</div>
 
             {% if voucher.contents == None %}
-              <div class="m-3 p-1 border border-light text-warning">{% trans "assemblyedit__vouchers__hidden_data" %}</div>
+              <div class="m-3 p-1 border border-light text-warning">{% trans "Assembly__edit__vouchers__hidden_data" %}</div>
             {% else %}
               {% for content in voucher.contents %}
                 <div class="m-3 p-1 border border-light">
@@ -44,7 +44,7 @@
                 </div>
               {% empty %}
                 <div class="m-3 p-1 border border-secondary text-muted font-italic">
-                  {% trans "assemblyedit__vouchers__not_assigned" %}
+                  {% trans "Assembly__edit__vouchers__not_assigned" %}
                 </div>
               {% endfor %}
             {% endif %}
diff --git a/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html b/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html
index 6d71d5905345d88f6e497e0ffddba41cf43502fd..9bd2fb69512216a0e4f57f2a41d62421bc4d3ccf 100644
--- a/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html
+++ b/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html
@@ -106,7 +106,7 @@
         {% endif %}
 
         {% if field.required and value|default:'' == '' %}
-          <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "assembly_additionalfield_required" %}</div>
+          <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "Assembly__additional_field__required" %}</div>
         {% endif %}
       </div>
     {% endwith %}
diff --git a/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html b/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html
index e652b8c69d00b202bd44651d0290c6773a4d6317..cc728cd105b16391f5a0ccaae8528e240c8e25c0 100644
--- a/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html
+++ b/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html
@@ -58,7 +58,7 @@
           <dt class="col-sm-2">{% trans "Assembly__registration_data" %}</dt>
           <dd class="col-sm-10">
             <div class="border border-secondary-subtle p-1">
-              {% include "backoffice/assemblyteam_assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=object.registration_data %}
+              {% include "backoffice/assemblyteam_assembly_additional_fields.html" with schema=conference.get_additional_fields_schema data=object.registration_data %}
             </div>
           </dd>
         {% endif %}
@@ -102,14 +102,14 @@
                       <a class="dropdown-item text-danger"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered">
-                        {% trans "assemblyedit_statebtn_registered" %}
+                        {% trans "Assembly__edit__state_btn_registered" %}
                       </a>
                     </li>
                     <li>
                       <a class="dropdown-item text-danger"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected">
-                        {% trans "assemblyedit_statebtn_reject" %}
+                        {% trans "Assembly__edit__state_btn_reject" %}
                       </a>
                     </li>
 
@@ -118,21 +118,21 @@
                       <a class="dropdown-item text-success"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=accepted">
-                        {% trans "assemblyedit_statebtn_accept" %}
+                        {% trans "Assembly__edit__state_btn_accept" %}
                       </a>
                     </li>
                     <li>
                       <a class="dropdown-item text-danger"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected">
-                        {% trans "assemblyedit_statebtn_reject" %}
+                        {% trans "Assembly__edit__state_btn_reject" %}
                       </a>
                     </li>
                     <li>
                       <a class="dropdown-item text-secondary"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden">
-                        {% trans "assemblyedit_statebtn_hidden" %}
+                        {% trans "Assembly__edit__state_btn_hidden" %}
                       </a>
                     </li>
 
@@ -141,7 +141,7 @@
                       <a class="dropdown-item text-warning"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered">
-                        {% trans "assemblyedit_statebtn_rejected2registered" %}
+                        {% trans "Assembly__edit__state_btn_rejected2registered" %}
                       </a>
                     </li>
 
@@ -152,7 +152,7 @@
                           <a class="dropdown-item text-secondary"
                              role="button"
                              href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=placed">
-                            {% trans "assemblyedit_statebtn_placed" %}
+                            {% trans "Assembly__edit__state_btn_placed" %}
                           </a>
                         </li>
                       {% endif %}
@@ -161,7 +161,7 @@
                           <a class="dropdown-item text-info"
                              role="button"
                              href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=arrived">
-                            {% trans "assemblyedit_statebtn_arrived" %}
+                            {% trans "Assembly__edit__state_btn_arrived" %}
                           </a>
                         </li>
                       {% endif %}
@@ -170,7 +170,7 @@
                           <a class="dropdown-item text-success"
                              role="button"
                              href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=confirmed">
-                            {% trans "assemblyedit_statebtn_confirmed" %}
+                            {% trans "Assembly__edit__state_btn_confirmed" %}
                           </a>
                         </li>
                       {% endif %}
@@ -180,14 +180,14 @@
                       <a class="dropdown-item text-secondary"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered">
-                        {% trans "assemblyedit_statebtn_public2registered" %}
+                        {% trans "Assembly__edit__state_btn_public2registered" %}
                       </a>
                     </li>
                     <li>
                       <a class="dropdown-item text-secondary"
                          role="button"
                          href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden">
-                        {% trans "assemblyedit_statebtn_hidden" %}
+                        {% trans "Assembly__edit__state_btn_hidden" %}
                       </a>
                     </li>
 
@@ -203,13 +203,13 @@
             <div class="card-body">
               <a role="button"
                  class="btn btn-sm btn-light"
-                 title="{% trans "assemblyteam-editassembly" %}"
+                 title="{% trans "AssemblyTeam__edit_assembly" %}"
                  href="{% url 'backoffice:assembly-edit' pk=assembly.id %}">
                 <i class="bi bi-pencil-square"></i>
               </a>
               <a role="button"
                  class="btn btn-sm btn-light"
-                 title="{% trans "assemblyteam-message" %}"
+                 title="{% trans "AssemblyTeam__message" %}"
                  href="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}">
                 <i class="bi bi-mailbox"></i>
               </a>
@@ -235,7 +235,7 @@
       {% if latest_note %}
         <div class="card mb-3 border-info">
           <div class="card-header bg-info text-bg-info">
-            <i class="bi bi-chat-left-text"></i> {% trans "assemblyteam_lastnote" %}
+            <i class="bi bi-chat-left-text"></i> {% trans "AssemblyTeam__lastnote" %}
           </div>
           <div class="card-body">
             <p class="text-muted">
diff --git a/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html b/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html
index b134f209d3e35f7c05459e89f580a3a345b3aaad..c866dc451be160ab032f78f9f701301fd243aae8 100644
--- a/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html
+++ b/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html
@@ -15,7 +15,7 @@
   <div class="row">
     <div class="col-md-12">
       <div class="card mb-3">
-        <div class="card-header">{% trans "assemblyedit_hierarchy" %}</div>
+        <div class="card-header">{% trans "Assembly__edit__hierarchy" %}</div>
         <div class="card-body">
           <form action="{% url 'backoffice:assemblyteam-edithierarchy' pk=assembly.id %}"
                 method="post">
@@ -27,7 +27,7 @@
               {% trans "Assembly__hierarchy" %}: <s class="text-danger">{{ assembly.get_hierarchy_display }}</s> <span class="text-success">{{ new_value_translated }}</span>
             </p>
 
-            <p>{% trans "assemblyteam_addcomment_field" %}:</p>
+            <p>{% trans "AssemblyTeam__add_comment_field" %}:</p>
             <textarea name="comment"
                       class="form-control"
                       placeholder="(optional)"
diff --git a/src/backoffice/templates/backoffice/assemblyteam_editposition.html b/src/backoffice/templates/backoffice/assemblyteam_editposition.html
index f05ac91b0645a8d7b4498f1802931ef5b9981dda..83a33fe28583df5aadb402e47c005630d99b474b 100644
--- a/src/backoffice/templates/backoffice/assemblyteam_editposition.html
+++ b/src/backoffice/templates/backoffice/assemblyteam_editposition.html
@@ -15,7 +15,7 @@
   <div class="row">
     <div class="col-md-12">
       <div class="card mb-3">
-        <div class="card-header">{% trans "assemblyedit_position" %}</div>
+        <div class="card-header">{% trans "Assembly__edit__position" %}</div>
         <div class="card-body">
           <form action="{% url 'backoffice:assemblyteam-editposition' pk=assembly.id %}"
                 method="post">
@@ -67,13 +67,13 @@
               <!--
                     <div class="form-group">
                       <input type="checkbox" id=idInformAssembly" name="inform_assembly">
-                      <label for="idInformAssembly">{% trans "assemblyedit_position_informassembly" %}</label>
+                      <label for="idInformAssembly">{% trans "Assembly__edit__position_inform_assembly" %}</label>
                     </div>
                   -->
 
             {% endif %}
 
-            <p>{% trans "assemblyteam_addcomment_field" %}</p>
+            <p>{% trans "AssemblyTeam__add_comment_field" %}</p>
             <textarea name="comment"
                       class="form-control"
                       placeholder="(optional)"
@@ -83,29 +83,29 @@
               <button type="submit"
                       class="btn btn-sm btn-primary"
                       name="action"
-                      value="save">{% trans "assemblyedit_position_update" %}</button>
+                      value="save">{% trans "Assembly__edit__position_update" %}</button>
 
               <button type="submit"
                       class="btn btn-sm btn-danger"
                       name="action"
-                      value="recall">{% trans "assemblyedit_position_recall" %}</button>
+                      value="recall">{% trans "Assembly__edit__position_recall" %}</button>
 
             {% elif assembly.is_public %}
               <button type="submit"
                       class="btn btn-sm btn-primary"
                       name="action"
-                      value="publish">{% trans "assemblyedit_position_publish" %}</button>
+                      value="publish">{% trans "Assembly__edit__position_publish" %}</button>
 
               <button type="submit"
                       class="btn btn-sm btn-secondary"
                       name="action"
-                      value="save">{% trans "assemblyedit_position_save_unpublished" %}</button>
+                      value="save">{% trans "Assembly__edit__position_save_unpublished" %}</button>
 
             {% else %}
               <button type="submit"
                       class="btn btn-sm btn-danger"
                       name="action"
-                      value="save">{% trans "assemblyedit_position_save_unaccepted" %}</button>
+                      value="save">{% trans "Assembly__edit__position_save_unaccepted" %}</button>
 
             {% endif %}
           </form>
diff --git a/src/backoffice/templates/backoffice/assemblyteam_editstate.html b/src/backoffice/templates/backoffice/assemblyteam_editstate.html
index 79a88978f05754a0a2a5e85da6bd23ace662bee3..762672528c2b3e0f569476fec83070c002019358 100644
--- a/src/backoffice/templates/backoffice/assemblyteam_editstate.html
+++ b/src/backoffice/templates/backoffice/assemblyteam_editstate.html
@@ -15,7 +15,7 @@
   <div class="row">
     <div class="col-md-12">
       <div class="card mb-3">
-        <div class="card-header">{% trans "assemblyedit_state" %}</div>
+        <div class="card-header">{% trans "Assembly__edit__state" %}</div>
         <div class="card-body">
           <form action="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}"
                 method="post">
@@ -27,7 +27,7 @@
               {% trans "Assembly__state" %}: <s class="text-danger">{{ assembly.get_state_display }}</s> <span class="text-success">{{ new_value_translated }}</span>
             </p>
 
-            <p>{% trans "assemblyteam_addcomment_field" %}:</p>
+            <p>{% trans "AssemblyTeam__add_comment_field" %}:</p>
             <textarea name="comment"
                       class="form-control"
                       placeholder="(optional)"
diff --git a/src/backoffice/templates/backoffice/base.html b/src/backoffice/templates/backoffice/base.html
index 0fee1c4396fa6809f42a568d9fa5d22377471a49..ac043b9518d8220c396d5a05acca341ff2ed31d4 100644
--- a/src/backoffice/templates/backoffice/base.html
+++ b/src/backoffice/templates/backoffice/base.html
@@ -1,6 +1,6 @@
 {% load i18n %}
 {% load static %}
-{% trans "nav_activetab_srmarker" as activetab_srmarker %}
+{% trans "nav_active_tab_sr_marker" as activetab_srmarker %}
 <!DOCTYPE html>
 <html lang="{{ request.LANGUAGE_CODE | default:"en" }}">
   <head>
diff --git a/src/backoffice/templates/backoffice/event/components/list_script.js b/src/backoffice/templates/backoffice/event/components/list_script.js
index 1a850e70d57546343e602a0111ac508b34c86047..6fadf5dc7f6ed2a1b0072a475ffabca2e9b20e4c 100644
--- a/src/backoffice/templates/backoffice/event/components/list_script.js
+++ b/src/backoffice/templates/backoffice/event/components/list_script.js
@@ -14,7 +14,7 @@ $(document).ready(function() {
         "loadingRecords": "LOADING ...",
         "processing":     "Processing...",
         "search":         "{% trans "assembly_search" %}",
-        "zeroRecords":    "{% trans "assembly_noentries" %}",
+        "zeroRecords":    "{% trans "assembly_no_entries" %}",
         "paginate": {
             "first":      "{% trans "assembly_paginate_first" %}",
             "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/index.html b/src/backoffice/templates/backoffice/index.html
index 91ae8119efd69a8e031c1a1c69000f29295be681..be7506641250e9cdc42eac781773d45158ce4ad4 100644
--- a/src/backoffice/templates/backoffice/index.html
+++ b/src/backoffice/templates/backoffice/index.html
@@ -10,7 +10,7 @@
   {% if user.is_authenticated %}
     <div class="card">
 
-      <div class="card-header">{% trans "myassemblies" %}</div>
+      <div class="card-header">{% trans "my_assemblies" %}</div>
       <div class="card-body">
         <table class="table table-sm">
           <thead>
@@ -20,7 +20,7 @@
             </tr>
           </thead>
           <tbody>
-            {% for assembly in myassemblies %}
+            {% for assembly in my_assemblies %}
               <tr>
                 <td>
                   <a href="{% url 'backoffice:assembly' pk=assembly.id %}">{{ assembly.name }}</a>
@@ -45,16 +45,16 @@
         {% if conference.is_open %}
           <a class="btn btn-success"
              href="{% url 'backoffice:assembly-create' %}"
-             style="float: right">{% trans "assemblycreate" %}</a>
+             style="float: right">{% trans "assembly_create" %}</a>
         {% elif has_assemblies %}
           <a class="btn btn-warning"
              href="{% url 'backoffice:assembly-create' %}"
              style="float: right"
-             title="{% trans "assemblycreate_deadlineexceeded" %}">{% trans "assemblycreate" %}</a>
+             title="{% trans "Assembly__create__deadline_exceeded" %}">{% trans "assembly_create" %}</a>
         {% else %}
           <button class="btn btn-success disabled"
-                  title="{% trans "assemblycreate_deadlineexceeded" %}"
-                  style="float: right">{% trans "assemblycreate" %}</button>
+                  title="{% trans "Assembly__create__deadline_exceeded" %}"
+                  style="float: right">{% trans "assembly_create" %}</button>
         {% endif %}
       </div>
     </div>
diff --git a/src/backoffice/templates/backoffice/login.html b/src/backoffice/templates/backoffice/login.html
index d5bafa91f3b79acce3ff0659fd9f1dff75722372..28e566b51077d70da0d5fdb8c09a21bafb7851b1 100644
--- a/src/backoffice/templates/backoffice/login.html
+++ b/src/backoffice/templates/backoffice/login.html
@@ -28,7 +28,7 @@
 
   <div class="row">
     <div class="mx-auto">
-      <a class="text-muted" href="{% url 'backoffice:signup' %}">{% trans "registration_signup" %}</a>
+      <a class="text-muted" href="{% url 'backoffice:signup' %}">{% trans "registration_sign_up" %}</a>
     </div>
     <div class="mx-auto">
       <a class="text-muted" href="{% url 'backoffice:password_reset' %}">{% trans "registration_password_reset_link" %}</a>
diff --git a/src/backoffice/templates/backoffice/map_floor_list.html b/src/backoffice/templates/backoffice/map_floor_list.html
index 53f15955a650b79cca8080be88cdc6f9f88f74f5..b487154244e033c3d7d4277b8b83e8d88784aa21 100644
--- a/src/backoffice/templates/backoffice/map_floor_list.html
+++ b/src/backoffice/templates/backoffice/map_floor_list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/map_poi_list.html b/src/backoffice/templates/backoffice/map_poi_list.html
index 443be84b979ee716cd59a06affca0bf03e760825..9fb3218ae38ce3a84ed82490a974c9462d8cb9b6 100644
--- a/src/backoffice/templates/backoffice/map_poi_list.html
+++ b/src/backoffice/templates/backoffice/map_poi_list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/moderation_assembly-detail.html b/src/backoffice/templates/backoffice/moderation_assembly-detail.html
index 3e24840ed766c168c240db3ad3817dc109306aaf..76a431978514a26d0d7e195b49f296360936f41a 100644
--- a/src/backoffice/templates/backoffice/moderation_assembly-detail.html
+++ b/src/backoffice/templates/backoffice/moderation_assembly-detail.html
@@ -93,7 +93,7 @@
         {% trans "moderation__public_link" %}
         {% if not assembly.is_public %}
           <br>
-          <small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small>
+          <small class="text-muted fst-italic">{% trans "moderation__not_public" %}</small>
         {% endif %}
       </a>
 
@@ -107,7 +107,7 @@
               <i class="bi bi-eye-slash"></i> hide
             </button>
           {% else %}
-            {% trans "moderation__assembly__cannotunhide" %}
+            {% trans "moderation__assembly__cannot_unhide" %}
           {% endif %}
         </div>
       </div>
diff --git a/src/backoffice/templates/backoffice/moderation_assembly-list.html b/src/backoffice/templates/backoffice/moderation_assembly-list.html
index 428b542b565baee0133e50f83dbf83b035192087..42cbfceea7da652dd472f4842c16089122debaa8 100644
--- a/src/backoffice/templates/backoffice/moderation_assembly-list.html
+++ b/src/backoffice/templates/backoffice/moderation_assembly-list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
@@ -53,7 +53,7 @@
 
       {% if filter_tag is not None %}
         <div class="alert alert-info">
-          {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong>
+          {% trans "assemblies_filtered_tag" %}: <strong>{{ filter_tag }}</strong>
         </div>
       {% endif %}
 
@@ -61,7 +61,7 @@
         <thead>
           <tr>
             {% if conference.support_clusters %}
-              <th>{% trans "Assembly__hierarchy-cluster" %}</th>
+              <th>{% trans "Assembly__hierarchy__cluster" %}</th>
             {% endif %}
             <th>{% trans "Assembly__slug" %}</th>
             <th>{% trans "Assembly__name" %}</th>
diff --git a/src/backoffice/templates/backoffice/moderation_badge-list.html b/src/backoffice/templates/backoffice/moderation_badge-list.html
index 7ee761343e715fea4a83514b47cc329ac516495d..ee5f65b8e1fc71a46bba2d5b1c79f61b2f51e0c4 100644
--- a/src/backoffice/templates/backoffice/moderation_badge-list.html
+++ b/src/backoffice/templates/backoffice/moderation_badge-list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/moderation_board-list.html b/src/backoffice/templates/backoffice/moderation_board-list.html
index f8ea68958f413619b8a38c40da4114cb0f4bdb15..4ec666f2a065baeff5fec851fde2174912797fe8 100644
--- a/src/backoffice/templates/backoffice/moderation_board-list.html
+++ b/src/backoffice/templates/backoffice/moderation_board-list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/moderation_event-detail.html b/src/backoffice/templates/backoffice/moderation_event-detail.html
index 032da6aa7361697a14733ac3c4079bdb9f33fe9e..770fec16b8dc0d9731d27d86223e055d23157b7c 100644
--- a/src/backoffice/templates/backoffice/moderation_event-detail.html
+++ b/src/backoffice/templates/backoffice/moderation_event-detail.html
@@ -126,7 +126,7 @@
         {% trans "moderation__public_link" %}
         {% if not event.is_public %}
           <br>
-          <small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small>
+          <small class="text-muted fst-italic">{% trans "moderation__not_public" %}</small>
         {% endif %}
       </a>
 
diff --git a/src/backoffice/templates/backoffice/moderation_user-list.html b/src/backoffice/templates/backoffice/moderation_user-list.html
index 2f935964662994a9081a526bb8b34a33bc101b44..cfbc6a49a69819690d3551f9d77cbd2901ca7b91 100644
--- a/src/backoffice/templates/backoffice/moderation_user-list.html
+++ b/src/backoffice/templates/backoffice/moderation_user-list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/moderation_wiki-list.html b/src/backoffice/templates/backoffice/moderation_wiki-list.html
index 30252e582e50aee53ac38d69e6cb024219c7187b..2ff55a276adc4c7e5d5ddb5e9e105af025b0d631 100644
--- a/src/backoffice/templates/backoffice/moderation_wiki-list.html
+++ b/src/backoffice/templates/backoffice/moderation_wiki-list.html
@@ -26,7 +26,7 @@
                 "loadingRecords": "LOADING ...",
                 "processing":     "Processing...",
                 "search":         "{% trans "assembly_search" %}",
-                "zeroRecords":    "{% trans "assembly_noentries" %}",
+                "zeroRecords":    "{% trans "assembly_no_entries" %}",
                 "paginate": {
                     "first":      "{% trans "assembly_paginate_first" %}",
                     "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/project/components/list_script.js b/src/backoffice/templates/backoffice/project/components/list_script.js
index 2b0a7fe0c289da25980a8f5529ec71e66d6c77bc..251081429c71981332649ef57a78a79eacdbf02f 100644
--- a/src/backoffice/templates/backoffice/project/components/list_script.js
+++ b/src/backoffice/templates/backoffice/project/components/list_script.js
@@ -14,7 +14,7 @@ $(document).ready(function() {
         "loadingRecords": "LOADING ...",
         "processing":     "Processing...",
         "search":         "{% trans "assembly_search" %}",
-        "zeroRecords":    "{% trans "assembly_noentries" %}",
+        "zeroRecords":    "{% trans "assembly_no_entries" %}",
         "paginate": {
             "first":      "{% trans "assembly_paginate_first" %}",
             "last":       "{% trans "assembly_paginate_last" %}",
diff --git a/src/backoffice/templates/backoffice/room-new.html b/src/backoffice/templates/backoffice/room-new.html
index f13cac970b8065afeaf533dbdd00732a229288b7..e86a373f66ce753a58ea94a06baa8da69fa9bd09 100644
--- a/src/backoffice/templates/backoffice/room-new.html
+++ b/src/backoffice/templates/backoffice/room-new.html
@@ -15,7 +15,7 @@
       <h1>
         <a href="{% url 'backoffice:assembly' pk=assembly.id %}"
            class="text-muted">{{ assembly.name }}</a>:
-        {% trans "Room-new" %}
+        {% trans "Room__new" %}
       </h1>
     </div>
 
@@ -31,16 +31,16 @@
               <div class="card">
                 <div class="card-body {% if rooms_available.bbb %}border-primary{% else %}border-default{% endif %}">
                   <h5 class="card-title {% if rooms_available.bbb %}text-primary{% else %}text-default{% endif %}">
-                    {% trans "Room-new-bbb" %}
+                    {% trans "Room__new-bbb" %}
                   </h5>
-                  <p class="card-text">{% trans "Room-new-bbb__help" %}</p>
+                  <p class="card-text">{% trans "Room__new-bbb__help" %}</p>
                 </div>
                 <div class="card-footer">
                   {% if rooms_available.bbb %}
                     <a class="btn btn-sm btn-primary"
-                       href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=bbb">{% trans "Room-new-bbb__create" %}</a>
+                       href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=bbb">{% trans "Room__new-bbb__create" %}</a>
                   {% else %}
-                    <span class="text-muted" style="font-size: 90%;">{% trans "Room-new-bbb__unavailable" %}</span>
+                    <span class="text-muted" style="font-size: 90%;">{% trans "Room__new-bbb__unavailable" %}</span>
                   {% endif %}
                 </div>
               </div>
@@ -53,16 +53,16 @@
               <div class="card">
                 <div class="card-body {% if rooms_available.hangar %}border-primary{% else %}border-default{% endif %}">
                   <h5 class="card-title {% if rooms_available.hangar %}text-primary{% else %}text-default{% endif %}">
-                    {% trans "Room-new-hangar" %}
+                    {% trans "Room__new-hangar" %}
                   </h5>
-                  <p class="card-text">{% trans "Room-new-hangar__help" %}</p>
+                  <p class="card-text">{% trans "Room__new-hangar__help" %}</p>
                 </div>
                 <div class="card-footer">
                   {% if rooms_available.hangar %}
                     <a class="btn btn-sm btn-primary"
-                       href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=hangar">{% trans "Room-new-hangar__create" %}</a>
+                       href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=hangar">{% trans "Room__new-hangar__create" %}</a>
                   {% else %}
-                    <span class="text-muted" style="font-size: 90%;">{% trans "Room-new-hangar__unavailable" %}</span>
+                    <span class="text-muted" style="font-size: 90%;">{% trans "Room__new-hangar__unavailable" %}</span>
                   {% endif %}
                 </div>
               </div>
@@ -76,15 +76,15 @@
           <div class="col">
             <div class="card">
               <div class="card-body border-default">
-                <h5 class="card-title text-default">{% trans "Room-new-lecturehall" %}</h5>
-                <p class="card-text">{% trans "Room-new-lecturehall__help" %}</p>
+                <h5 class="card-title text-default">{% trans "Room__new-lecture_hall" %}</h5>
+                <p class="card-text">{% trans "Room__new-lecture_hall__help" %}</p>
               </div>
               <div class="card-footer">
                 {% if rooms_available.lecturehall %}
                   <a class="btn btn-sm btn-primary"
-                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=lecturehall">{% trans "Room-new-lecturehall__create" %}</a>
+                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=lecturehall">{% trans "Room__new-lecture_hall__create" %}</a>
                 {% else %}
-                  <span class="text-muted" style="font-size: 90%;">{% trans "Room-new-lecturehall__unavailable" %}</span>
+                  <span class="text-muted" style="font-size: 90%;">{% trans "Room__new-lecture_hall__unavailable" %}</span>
                 {% endif %}
               </div>
             </div>
@@ -94,15 +94,15 @@
           <div class="col">
             <div class="card">
               <div class="card-body border-default">
-                <h5 class="card-title text-default">{% trans "Room-new-stage" %}</h5>
-                <p class="card-text">{% trans "Room-new-stage__help" %}</p>
+                <h5 class="card-title text-default">{% trans "Room__new-stage" %}</h5>
+                <p class="card-text">{% trans "Room__new-stage__help" %}</p>
               </div>
               <div class="card-footer">
                 {% if rooms_available.stage %}
                   <a class="btn btn-sm btn-primary"
-                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=stage">{% trans "Room-new-stage__create" %}</a>
+                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=stage">{% trans "Room__new-stage__create" %}</a>
                 {% else %}
-                  <span class="text-muted" style="font-size: 90%;">{% trans "Room-new-stage__unavailable" %}</span>
+                  <span class="text-muted" style="font-size: 90%;">{% trans "Room__new-stage__unavailable" %}</span>
                 {% endif %}
               </div>
             </div>
@@ -112,15 +112,15 @@
           <div class="col">
             <div class="card">
               <div class="card-body border-default">
-                <h5 class="card-title text-default">{% trans "Room-new-workshop" %}</h5>
-                <p class="card-text">{% trans "Room-new-workshop__help" %}</p>
+                <h5 class="card-title text-default">{% trans "Room__new-workshop" %}</h5>
+                <p class="card-text">{% trans "Room__new-workshop__help" %}</p>
               </div>
               <div class="card-footer">
                 {% if rooms_available.workshop %}
                   <a class="btn btn-sm btn-primary"
-                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workshop">{% trans "Room-new-workshop__create" %}</a>
+                     href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workshop">{% trans "Room__new-workshop__create" %}</a>
                 {% else %}
-                  <span class="text-muted" style="font-size: 90%;">{% trans "Room-new-workshop__unavailable" %}</span>
+                  <span class="text-muted" style="font-size: 90%;">{% trans "Room__new-workshop__unavailable" %}</span>
                 {% endif %}
               </div>
             </div>
@@ -129,7 +129,7 @@
         </div>
         <div class="text-center mt-4">
           <a class="text-muted"
-             href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=other">{% trans "Room-new-other__create" %}</a>
+             href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=other">{% trans "Room__new-other__create" %}</a>
         </div>
 
       {% else %}
diff --git a/src/backoffice/templates/backoffice/schedules_index.html b/src/backoffice/templates/backoffice/schedules_index.html
index e22f0592ee49068b8fd089597d2bf1978af1cfb1..4a6fb5ac40f8439146d07b97316ca5a5775a4a6a 100644
--- a/src/backoffice/templates/backoffice/schedules_index.html
+++ b/src/backoffice/templates/backoffice/schedules_index.html
@@ -6,7 +6,7 @@
 
   <div class="mb-3 align-content-end">
     <a class="btn btn-primary"
-       href="{% url 'backoffice:schedulesource-list' %}">{% trans "backoffice_schedules_tabularview" %}</a>
+       href="{% url 'backoffice:schedulesource-list' %}">{% trans "backoffice_schedules_tabular_view" %}</a>
   </div>
 
   <div class="row row-cols-1 row-cols-md-3 g-4">
diff --git a/src/backoffice/templates/backoffice/sos_create_edit.html b/src/backoffice/templates/backoffice/sos_create_edit.html
index 33d7a9d3ceed74841ee479251ed492681870590a..36ae74b410bad1965662b452afbc46122a2214fa 100644
--- a/src/backoffice/templates/backoffice/sos_create_edit.html
+++ b/src/backoffice/templates/backoffice/sos_create_edit.html
@@ -136,7 +136,7 @@
         {% if event.is_public %}
           <div class="mb-3">
             <div class="card border-primary-subtle">
-              <div class="card-header small bg-primary-subtle">{% trans "Event__publisheddata-current" %}</div>
+              <div class="card-header small bg-primary-subtle">{% trans "Event__published_data__current" %}</div>
               <div class="card-body small">
                 <div class="row">
                   <div class="col-md-3">
diff --git a/src/backoffice/templates/backoffice/wiki_lock_list.html b/src/backoffice/templates/backoffice/wiki_lock_list.html
index 0b04fd024bbec54e5e260aa49065692d7145febf..3a931a9fc29ebb086cfa55d537f99faeb6325732 100644
--- a/src/backoffice/templates/backoffice/wiki_lock_list.html
+++ b/src/backoffice/templates/backoffice/wiki_lock_list.html
@@ -21,8 +21,8 @@
               form.submit()
             },
             'warning',
-            '{% trans "StaticPage-lockdrop" %}',
-            '{% trans "StaticPage-lockdrop__help" %}',
+            '{% trans "StaticPage-lock_drop" %}',
+            '{% trans "StaticPage-lock_drop__help" %}',
             'Machen Sie\'s so!')
       })
     });
diff --git a/src/backoffice/templates/backoffice/wiki_page_detail.html b/src/backoffice/templates/backoffice/wiki_page_detail.html
index 037674a3a0154e9a977dc1acb1148e7c6e27259a..a9610ed678580bb460e24df776dc0a48eeaea354 100644
--- a/src/backoffice/templates/backoffice/wiki_page_detail.html
+++ b/src/backoffice/templates/backoffice/wiki_page_detail.html
@@ -7,7 +7,7 @@
   <form action="{% url 'backoffice:wiki-page-delete' pk=object.pk %}"
         method="post"
         id="delete_page"
-        onsubmit="return confirm('{% trans "StaticPage--delete-confirm" %}')">
+        onsubmit="return confirm('{% trans "StaticPage__delete-confirm" %}')">
     {% csrf_token %}
   </form>
 
@@ -32,27 +32,27 @@
         {% bootstrap_form form %}
       </div>
       <div class="card-footer text-end">
-        <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage--delete-page" %}</button>
-        <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
+        <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage__delete-page" %}</button>
+        <button type="submit" class="btn btn-primary">{% trans "StaticPage__edit__submit_btn" %}</button>
       </div>
     </div>
   </form>
 
   <form method="post"
         action="{% url 'backoffice:wiki-page-revision-delete' pk=object.pk %}"
-        onsubmit="return confirm('{% trans "StaticPageRevision--delete-confirm" %}')">
+        onsubmit="return confirm('{% trans "StaticPageRevision__delete-confirm" %}')">
     {% csrf_token %}
 
     <div class="card mt-2">
-      <div class="card-header">{% trans "StaticPage--revisions" %}</div>
+      <div class="card-header">{% trans "StaticPage__revisions" %}</div>
       <div class="card-body">
         <table class="table table-sm">
           <thead>
             <tr>
-              <th>{% trans "StaticPageRevision--revision" %}</th>
-              <th>{% trans "StaticPageRevision--title" %}</th>
-              <th>{% trans "StaticPageRevision--author" %}</th>
-              <th>{% trans "StaticPageRevision--date" %}</th>
+              <th>{% trans "StaticPageRevision__revision" %}</th>
+              <th>{% trans "StaticPageRevision__title" %}</th>
+              <th>{% trans "StaticPageRevision__author" %}</th>
+              <th>{% trans "StaticPageRevision__date" %}</th>
               <th>&nbsp;</th>
             </tr>
           </thead>
@@ -67,7 +67,7 @@
                   <button class="btn btn-danger btn-sm"
                           type="submit"
                           name="revision"
-                          value="{{ revision.revision }}">{% trans "StaticPageRevision--delete" %}</button>
+                          value="{{ revision.revision }}">{% trans "StaticPageRevision__delete" %}</button>
                 </td>
               </tr>
             {% endfor %}
@@ -80,7 +80,7 @@
   {% if object.public_revision > 0 %}
     <div class="card mt-3">
       <div class="card-header">
-        {% blocktranslate %}StaticPage--preview {{ object.public_revision }}{% endblocktranslate%}
+        {% blocktranslate %}StaticPage__preview {{ object.public_revision }}{% endblocktranslate%}
       </div>
       <div class="card-body">{{ object.body_html|safe }}</div>
     </div>
diff --git a/src/backoffice/templates/registration/registration_form.html b/src/backoffice/templates/registration/registration_form.html
index 2777ccd35be505eb41a3a3b86ce2bae5281d5dce..8d14323236becd30a4add18264f991b43608a5bb 100644
--- a/src/backoffice/templates/registration/registration_form.html
+++ b/src/backoffice/templates/registration/registration_form.html
@@ -3,10 +3,10 @@
 {% load i18n %}
 
 {% block content %}
-  <h2>{% trans "registration_signup_title" %}</h2>
+  <h2>{% trans "registration_sign_up_title" %}</h2>
   <form action="{% url "backoffice:signup" %}" method="post">
     {% csrf_token %}
     {% bootstrap_form form %}
-    <button type="submit" class="btn btn-primary">{% trans "registration_signup_btn" %}</button>
+    <button type="submit" class="btn btn-primary">{% trans "registration_sign_up_btn" %}</button>
   </form>
 {% endblock content %}
diff --git a/src/backoffice/templates/registration/reset_password_done.html b/src/backoffice/templates/registration/reset_password_done.html
index 03100841c8436eb84852e8fcf390c2258f3f7c91..bc0934169f30c307842bdc4628c3a6ae57c836bc 100644
--- a/src/backoffice/templates/registration/reset_password_done.html
+++ b/src/backoffice/templates/registration/reset_password_done.html
@@ -5,6 +5,6 @@
   <h2>{% trans "registration_reset_password_done_title" %}</h2>
   <div class="alert alert-success">
     <h3>{% trans "registration_reset_password_done" %}</h3>
-    <p>{% trans "registration_reset_password_mailsent" %}</p>
+    <p>{% trans "registration_reset_password_mail_sent" %}</p>
   </div>
 {% endblock content %}
diff --git a/src/backoffice/templates/registration/signup_done.html b/src/backoffice/templates/registration/signup_done.html
index 39f0e9150e120bee50f57dc5ad13151c4b79e064..bde3157a0abcd3cf8a859e2fd1d7ececbabbbbf6 100644
--- a/src/backoffice/templates/registration/signup_done.html
+++ b/src/backoffice/templates/registration/signup_done.html
@@ -2,9 +2,9 @@
 {% load i18n %}
 
 {% block content %}
-  <h2>{% trans "registration_signup_title" %}</h2>
+  <h2>{% trans "registration_sign_up_title" %}</h2>
   <div class="alert alert-success">
-    <h3>{% trans "registration_signup_done" %}</h3>
-    <p>{% trans "registration_signup_mailsent" %}</p>
+    <h3>{% trans "registration_sign_up_done" %}</h3>
+    <p>{% trans "registration_sign_up_mail_sent" %}</p>
   </div>
 {% endblock content %}
diff --git a/src/backoffice/views/assemblies/assemblies.py b/src/backoffice/views/assemblies/assemblies.py
index eace26ccc928365fd41fe432e52f98e2c62dcc80..9269bf662e1a45dca3c32dd2a67fd14c6172e21e 100644
--- a/src/backoffice/views/assemblies/assemblies.py
+++ b/src/backoffice/views/assemblies/assemblies.py
@@ -36,18 +36,18 @@ class AssemblyListView(ConferenceLoginRequiredMixin, View):
 
     def get(self, *args, **kwargs):
         if self.request.user.is_authenticated:
-            myassemblies = list(Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=False))
+            my_assemblies = list(Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=False))
 
             # remove stored backlink for assembly pages from the session if it is set, so the backlink will go to the overview, which is the default
             self.request.session.pop('assembly_back', None)
         else:
-            myassemblies = None
+            my_assemblies = None
 
         ctx = self.get_context_data()
         ctx.update(
             {
                 'active_page': 'home',
-                'myassemblies': myassemblies,
+                'my_assemblies': my_assemblies,
             }
         )
 
@@ -190,26 +190,26 @@ class AssemblyUpdateView(AssemblyMixin, UpdateView):
                         if (min_value := field.get('min_value')) is not None:
                             if val < min_value:
                                 val = min_value
-                                messages.warning(self.request, _('assemblyedit_cfintbelowmin') + ' ' + field.get('caption', {}).get(get_language(), key))
+                                messages.warning(self.request, _('Assembly__edit__cf_int_below_min') + ' ' + field.get('caption', {}).get(get_language(), key))
 
                         if (max_value := field.get('max_value')) is not None:
                             if val > max_value:
                                 val = max_value
-                                messages.warning(self.request, _('assemblyedit_cfintabovemax') + ' ' + field.get('caption', {}).get(get_language(), key))
+                                messages.warning(self.request, _('Assembly__edit__cf_int_above_max') + ' ' + field.get('caption', {}).get(get_language(), key))
 
                     else:
                         val = None
 
                 except ValueError:
                     val = None
-                    messages.warning(self.request, _('assemblyedit_cfinterror') + ' ' + field.get('caption', {}).get(get_language(), key))
+                    messages.warning(self.request, _('Assembly__edit__cf_int_error') + ' ' + field.get('caption', {}).get(get_language(), key))
 
             elif field_type == 'date':
                 try:
                     val = date.fromisoformat(val) if val else None
                 except ValueError:
                     val = None
-                    messages.warning(self.request, _('assemblyedit_cfdateerror') + ' ' + field.get('caption', {}).get(get_language(), key))
+                    messages.warning(self.request, _('Assembly__edit__cf_date_error') + ' ' + field.get('caption', {}).get(get_language(), key))
 
                 if val is not None:
                     val_daterangeerror = False
@@ -234,7 +234,7 @@ class AssemblyUpdateView(AssemblyMixin, UpdateView):
                             pass
 
                     if val_daterangeerror:
-                        messages.warning(self.request, _('assemblyedit_cfdaterangeerror') + ' ' + field.get('caption', {}).get(get_language(), key))
+                        messages.warning(self.request, _('Assembly__edit__cf_date_range_error') + ' ' + field.get('caption', {}).get(get_language(), key))
 
                 val = val.isoformat() if val else None
 
@@ -243,7 +243,7 @@ class AssemblyUpdateView(AssemblyMixin, UpdateView):
                     if self.request.POST.get('additional_fields[' + key + '_option]') is None:
                         val = None
                     else:
-                        messages.warning(self.request, _('assemblyedit_cfoption_missingdetails') + ' ' + field.get('caption', {}).get(get_language(), key))
+                        messages.warning(self.request, _('Assembly__edit__cf_option_missing_details') + ' ' + field.get('caption', {}).get(get_language(), key))
 
             if (old_val := old_af.get(key)) != val:
                 changes[f'registration_data.{key}'] = (old_val, val)
@@ -292,7 +292,7 @@ class AssemblyUpdateView(AssemblyMixin, UpdateView):
         assembly.save()
 
         # log the action
-        messages.success(self.request, _('assemblyedit__success'))
+        messages.success(self.request, _('Assembly__edit__success'))
         logger.info(
             'Assembly "%(slug)s" (%(pk)s) edited by <%(user)s>: %(changes)s',
             {
@@ -407,7 +407,7 @@ class AssemblyLinksUpdateView(AssemblyMixin, View):
                 linked_assemblies_old = len(self.assembly.linked_assemblies)
                 _link, link_created = assembly.assembly_links.get_or_create(b=linked_assembly, is_public=True, type=AssemblyLink.Type.RELATED)
                 if link_created:
-                    messages.success(request, gettext('assemblyedit_addedlink').format(linked_name=linked_assembly.name))
+                    messages.success(request, gettext('Assembly__edit__link__added').format(linked_name=linked_assembly.name))
                     linked_assemblies = len(self.assembly.linked_assemblies)
                     self.assembly.log_activity(
                         user=self.request.user,
@@ -426,7 +426,7 @@ class AssemblyLinksUpdateView(AssemblyMixin, View):
                 count, _model = link.delete()
                 linked_assemblies = len(self.assembly.linked_assemblies)
                 if count > 0:
-                    messages.success(request, gettext('assemblyedit_removedlink').format(linked_name=link.b.name))
+                    messages.success(request, gettext('Assembly__edit__link__removed').format(linked_name=link.b.name))
                     self.assembly.log_activity(
                         user=self.request.user,
                         kind=ActivityLogEntry.Kind.STAFF if self.staff_access else ActivityLogEntry.Kind.ENTITY,
diff --git a/src/backoffice/views/assemblies/auth.py b/src/backoffice/views/assemblies/auth.py
index 4ea995fd7956ad34e3039c056e09665700041feb..88e099f55063792f97b67d08de2dfb0f95542a88 100644
--- a/src/backoffice/views/assemblies/auth.py
+++ b/src/backoffice/views/assemblies/auth.py
@@ -49,7 +49,7 @@ class AuthView(AssemblyMixin, FormView):
                 self.request,
                 format_html(
                     '{msg}:<br><strong><code>{secret}</code></strong>',
-                    msg=_('Application__newclientsecret'),
+                    msg=_('Application__new_client_secret'),
                     secret=app_client_secret,
                 ),
             )
@@ -74,7 +74,7 @@ class AuthGetTokenView(AssemblyMixin, View):
         token = Token(user=technical_user)
         token.save()
 
-        messages.success(self.request, format_lazy(_('Assembly__authentication__newtoken'), assembly=self.assembly.name, token=token.key))
+        messages.success(self.request, format_lazy(_('Assembly__authentication__new_token'), assembly=self.assembly.name, token=token.key))
         logger.info(
             'New API auth token generated for "%(technical_user)s" (assembly %(assembly)s by %(user)s)',
             {'technical_user': technical_user, 'assembly': self.assembly, 'user': self.request.user},
diff --git a/src/backoffice/views/assemblies/rooms.py b/src/backoffice/views/assemblies/rooms.py
index 2a1444d9e40e030d31000371712ee05e962b8c0f..8d30f96e533347a2f7808b25ec751ab3cc6c6b32 100644
--- a/src/backoffice/views/assemblies/rooms.py
+++ b/src/backoffice/views/assemblies/rooms.py
@@ -52,7 +52,7 @@ class AssemblyRoomUpdateView(AssemblyMixin, UpdateView):
         ctx['link_edit'] = self.link_edit
 
         if self.object.room_type == Room.RoomType.HANGAR:
-            ctx['legal_warning'] = _('Room-new-hangar__legal_hint')
+            ctx['legal_warning'] = _('Room__new-hangar__legal_hint')
             ctx['can_delete'] = False
 
         return ctx
@@ -148,7 +148,7 @@ class AssemblyRoomCreateView(AssemblyMixin, FormView):
             ctx['support_hangar'] = settings.INTEGRATIONS_HANGAR
 
         elif self.room_type == Room.RoomType.HANGAR:
-            ctx['legal_warning'] = _('Room-new-hangar__legal_hint')
+            ctx['legal_warning'] = _('Room__new-hangar__legal_hint')
 
         return ctx
 
diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py
index 3afb1391cca3ad9df37b8020704b0bd93ebee5ff..c1a1633e23fba064273768a566970cf8c91751f6 100644
--- a/src/backoffice/views/assemblyteam.py
+++ b/src/backoffice/views/assemblyteam.py
@@ -194,7 +194,7 @@ class AssemblyView(SingleAssemblyTeamMixin, DetailView):
                 kind=ActivityLogEntry.Kind.STAFF,
                 comment=comment,
             )
-            messages.success(self.request, _('assemblyteam_addcomment_success'))
+            messages.success(self.request, _('AssemblyTeam__add_comment_success'))
         return redirect('backoffice:assemblyteam-detail', self.assembly.id)
 
 
@@ -457,7 +457,7 @@ class AssemblyEditStateView(SingleAssemblyTeamMixin, View):
         )
 
         # log the action
-        messages.success(request, gettext('assemblyedit_changedstate'))
+        messages.success(request, gettext('Assembly__edit__changed_state'))
         logger.info(
             'Assembly "%(assembly_slug)s" (%(assembly_pk)s): set state to "%(state)s" upon request by <%(user)s>.',
             {
@@ -511,14 +511,14 @@ class AssemblyEditHierarchyView(SingleAssemblyTeamMixin, View):
 
         # don't allow changing cluster to regular if it has children
         if value == Assembly.Hierarchy.REGULAR and assembly.is_cluster and assembly.children.exists():
-            messages.error(request, gettext('assemblyedit_clusterstillhaschildren'))
+            messages.error(request, gettext('Assembly__edit__cluster_still_has_children'))
             return redirect(reverse('backoffice:assemblyteam-edithierarchy', kwargs={'pk': assembly.pk}) + '?value=' + value)
 
         assembly.hierarchy = value
         assembly.save(update_fields=['hierarchy'])
 
         # log the action
-        messages.success(request, gettext('assemblyedit_changedhierarchy'))
+        messages.success(request, gettext('Assembly__edit__changed_hierarchy'))
         logger.info(
             'Assembly "%(assembly_slug)s" (%(assembly_pk)s): set hierarchy to "%(state)s" upon request by <%(user)s>.',
             {
@@ -611,7 +611,7 @@ class AssemblyEditPlacementView(SingleAssemblyTeamMixin, View):
 
         except ValueError:
             logger.exception('Failed to update position of assembly %s', assembly.pk)
-            messages.error(request, gettext('assemblyedit_position_error'))
+            messages.error(request, gettext('Assembly__edit__position_error'))
             return redirect('backoffice:assemblyteam-editposition', pk=assembly.pk)
 
         if action == 'publish':
@@ -620,7 +620,7 @@ class AssemblyEditPlacementView(SingleAssemblyTeamMixin, View):
                 assembly.state = Assembly.State.PLACED
                 changes['state'] = assembly.state
             else:
-                messages.warning(request, gettext('assemblyedit_position_missingonpublish'))
+                messages.warning(request, gettext('Assembly__edit__position_missing_on_publish'))
                 return redirect('backoffice:assemblyteam-editposition', pk=assembly.pk)
 
         elif action == 'recall':
@@ -628,15 +628,15 @@ class AssemblyEditPlacementView(SingleAssemblyTeamMixin, View):
                 assembly.state = Assembly.State.ACCEPTED
                 changes['state'] = assembly.state
             else:
-                messages.warning(request, gettext('assemblyedit_position_wasnotpublished'))
+                messages.warning(request, gettext('Assembly__edit__position_was_not_published'))
 
         elif action != 'save':
-            messages.warning(request, gettext('assemblyedit_position_unknownaction'))
+            messages.warning(request, gettext('Assembly__edit__position_unknown_action'))
 
         assembly.save(update_fields=['state', 'location_point', 'location_boundaries', 'location_floor', 'location_data'])
 
         # log the action
-        messages.success(request, gettext('assemblyedit_changedposition'))
+        messages.success(request, gettext('Assembly__edit__changed_position'))
         logger.info(
             'Assembly "%(assembly_slug)s" (%(assembly_pk)s): set POI to "%(poi)s" & boundaries to "%(boundaries)s" & floor to "%(floor)s" upon request by <%(user)s>.',  # noqa:E501
             {
@@ -656,7 +656,7 @@ class AssemblyEditPlacementView(SingleAssemblyTeamMixin, View):
         )
 
         if assembly.state != old_values['state']:
-            messages.success(request, gettext('assemblyedit_changedstate'))
+            messages.success(request, gettext('Assembly__edit__changed_state'))
             logger.info(
                 'Assembly "%(assembly_slug)s" (%(assembly_pk)s): changed state to "%(state)s" upon request by <%(user)s>.',
                 {
diff --git a/src/backoffice/views/mixins.py b/src/backoffice/views/mixins.py
index f03b7c9a1edb26e329d803d950c0d1e88adf79ca..4546811fdf7ebaab17d2d93e7dbda6a04c52363d 100644
--- a/src/backoffice/views/mixins.py
+++ b/src/backoffice/views/mixins.py
@@ -220,7 +220,7 @@ class AssemblyMixinBase:
 
         sidebar = []
         context['sidebar'] = {
-            'back_link': {'link': reverse('backoffice:index'), 'caption': _('myassemblies')},
+            'back_link': {'link': reverse('backoffice:index'), 'caption': _('my_assemblies')},
             'title': assembly.slug,
             'title_link': reverse('backoffice:assembly', kwargs={'pk': assembly.id}),
             'items': sidebar,
@@ -234,7 +234,7 @@ class AssemblyMixinBase:
                 context['sidebar']['back_link'] = {'link': assembly_back['link'], 'caption': assembly_back['title']}
 
         organisation = []
-        sidebar.append({'caption': _('backoffice:assembly-organisational-data'), 'children': organisation})
+        sidebar.append({'caption': _('backoffice:assembly-organizational-data'), 'children': organisation})
         organisation.append(
             {
                 'caption': _('backoffice:assembly-basic-data'),
diff --git a/src/backoffice/views/profile.py b/src/backoffice/views/profile.py
index 765ea3ee95cec954a61642c365052a13a203d2a7..c8c2918a8e3ee73ba08c0de0c662f3082f203795 100644
--- a/src/backoffice/views/profile.py
+++ b/src/backoffice/views/profile.py
@@ -18,7 +18,7 @@ class ProfileView(ConferenceLoginRequiredMixin, FormView):
 
     def form_valid(self, form):
         form.save()
-        messages.success(self.request, _('userprofile_updated'))
+        messages.success(self.request, _('user_profile_updated'))
         return redirect('backoffice:profile')
 
     def get_context_data(self, *args, **kwargs):
diff --git a/src/backoffice/views/wiki.py b/src/backoffice/views/wiki.py
index c4326412ee8d0182a7562938429a273b28d28c65..72ed2f065c9053990d511aa56b32e02b8975c091 100644
--- a/src/backoffice/views/wiki.py
+++ b/src/backoffice/views/wiki.py
@@ -153,11 +153,11 @@ class PageView(WikiAdminMixin, UpdateView):
         return context
 
     def form_valid(self, form):
-        messages.success(self.request, _('StaticPage--changedmetadata') + ': ' + self.object.slug)
+        messages.success(self.request, _('StaticPage__metadata_changed') + ': ' + self.object.slug)
         return super().form_valid(form)
 
     def form_invalid(self, form):
-        messages.error(self.request, _('StaticPage--notchangedmetadata') + ': ' + self.object.slug)
+        messages.error(self.request, _('StaticPage__metadata_not_changed') + ': ' + self.object.slug)
         return super().form_invalid(form)
 
     def get_success_url(self, *args, **kwargs):
@@ -173,7 +173,7 @@ class PageDeleteView(WikiAdminMixin, DeleteView):
 
     def form_valid(self, form):
         res = super().form_valid(form)
-        messages.success(self.request, _('StaticPage--deleted'))
+        messages.success(self.request, _('StaticPage__deleted'))
         return res
 
 
@@ -190,5 +190,5 @@ class PageRevisionDeleteView(WikiAdminMixin, DeleteView):
 
     def form_valid(self, form):
         res = super().form_valid(form)
-        messages.success(self.request, _('StaticPageRevision--deleted'))
+        messages.success(self.request, _('StaticPageRevision__deleted'))
         return res
diff --git a/src/core/forms/authentication.py b/src/core/forms/authentication.py
index 15a3a9cc2884870d8574b89414c0ee7695f7dae9..1bb549771c77f462dad249c0153fa7f039867d11 100644
--- a/src/core/forms/authentication.py
+++ b/src/core/forms/authentication.py
@@ -128,7 +128,7 @@ class RegistrationForm(UserCreationForm):
         if self.request and self.request.limited:
             raise ValidationError(_('Registration__rate-limited'))
         if (username := self.cleaned_data.get('username')) and username.startswith('_'):
-            raise ValidationError({'username': _('Registration__username__nounderscore')})
+            raise ValidationError({'username': _('Registration__username__no_underscore')})
         return super().clean()
 
     def send_mail(
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index ed1fa0e48e6500913493bdbf453986f6ceb4f4a1..d64fb88050b90dd78fd451a0f0454a9185ee4324 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -131,7 +131,7 @@ msgstr "Deine Kontakt Email für diese Veranstaltung (nicht öffentlich)"
 msgid "Registration__rate-limited"
 msgstr "Zu viele Request (Rate-Limited), bitte einen Moment warten!"
 
-msgid "Registration__username__nounderscore"
+msgid "Registration__username__no_underscore"
 msgstr "Der Benutzername darf nicht mit einem Unterstrich beginnen."
 
 msgid "Conference__is_public__unchangeable"
@@ -168,10 +168,10 @@ msgid "Invalid Response"
 msgstr "Fehlerhafte Antwort"
 
 msgid "ActivityLogEntry"
-msgstr "Logeintrag"
+msgstr "Log-Eintrag"
 
 msgid "ActivityLogEntries"
-msgstr "Logeinträge"
+msgstr "Log-Einträge"
 
 msgid "ActivityLogEntry__kind-sys"
 msgstr "Systemänderung"
@@ -257,13 +257,13 @@ msgstr "angekommen (eigene Aussage)"
 msgid "Assembly__state-arrived_confirmed"
 msgstr "angekommen (bestätigt)"
 
-msgid "Assembly__hierarchy-regular"
+msgid "Assembly__hierarchy__regular"
 msgstr "regulär"
 
-msgid "Assembly__hierarchy-cluster"
+msgid "Assembly__hierarchy__cluster"
 msgstr "Habitat"
 
-msgid "Assembly__hierarchy-clusterrestricted"
+msgid "Assembly__hierarchy__cluster_restricted"
 msgstr "Habitat (nicht öffentlich)"
 
 msgid "Assembly__slug__help"
@@ -334,7 +334,7 @@ msgid "Assembly__is_virtual"
 msgstr "virtuell"
 
 msgid "Assembly__is_virtual__help"
-msgstr "Assembly ist virtuell dabei, z.B. über digitale Meetingräume wie WorkAdventure"
+msgstr "Assembly ist virtuell dabei, z.B. über digitale Meeting-Räume wie WorkAdventure"
 
 msgid "Assembly__is_physical"
 msgstr "physisch"
@@ -463,7 +463,7 @@ msgid "AssemblyMember__is_technical_contact__help"
 msgstr "Ansprechperson für technische Fragen der Vor-Ort-Assembly, z.B. Strom und Netzwerk"
 
 msgid "AssemblyMember__is_technical_contact"
-msgstr "techn. Ansprechperson"
+msgstr "technische Ansprechperson"
 
 msgid "AssemblyMember__show_public__help"
 msgstr "Zugehörigkeit öffentlich anzeigen?"
@@ -619,25 +619,25 @@ msgstr "Wenn du eine neue Badge akzeptierst wird sie standardmäßig mit dieser
 msgid "ConferenceMember__default_badge_visibility"
 msgstr "Sichtbarkeit neuer Badges"
 
-msgid "ConferenceMember__permission-confernece_admin"
+msgid "ConferenceMember__permission__conference_admin"
 msgstr "Konferenz-Admin: Kann die Veröffentlichungszeitpunkte der Konferenz verwalten"
 
-msgid "ConferenceMember__permission-assembly_team"
+msgid "ConferenceMember__permission__assembly_team"
 msgstr "Assembly-Team: alle Assemblies verwaltbar, auch noch nicht fertig angelegte und abgelehnte sind sichtbar"
 
-msgid "ConferenceMember__permission-assembly_registration_admin"
+msgid "ConferenceMember__permission__assembly_registration_admin"
 msgstr "Registrierungs-Admin: Verwalten der Registrierungsinformationen für Assemblies"
 
-msgid "ConferenceMember__permission-static_pages"
+msgid "ConferenceMember__permission__static_pages"
 msgstr "Statische Seiten: Verwaltung von Info-Seiten"
 
-msgid "ConferenceMember__permission-map_edit"
+msgid "ConferenceMember__permission__map_edit"
 msgstr "Bearbeitung der Karte (POIs)"
 
-msgid "ConferenceMember__permission-voucher_admin"
+msgid "ConferenceMember__permission__voucher_admin"
 msgstr "Voucher in der Konferenz verwalten"
 
-msgid "ConferenceMember__permission-scheduleadmin"
+msgid "ConferenceMember__permission__schedule_admin"
 msgstr "alle Schedule-Imports verwalten/debuggen"
 
 msgid "Conference"
@@ -695,7 +695,7 @@ msgid "Conference__end"
 msgstr "Ende"
 
 msgid "Conference__timezone__help"
-msgstr "Zeitzone in der die Konfernez veranstaltet wird"
+msgstr "Zeitzone in der die Konferenz veranstaltet wird"
 
 msgid "Conference__timezone"
 msgstr "Zeitzone"
@@ -770,13 +770,13 @@ msgid "Conference__support_assembly_virtual__help"
 msgstr "erlaube Assemblies in der virtuellen Welt"
 
 msgid "Conference__support_assembly_virtual"
-msgstr "virt. Assemblies"
+msgstr "virtuelle Assemblies"
 
 msgid "Conference__support_assembly_remote__help"
 msgstr "erlaube Assemblies an entfernten Standorten (ergänzt Orts-Angabe)"
 
 msgid "Conference__support_assembly_remote"
-msgstr "entf. Assemblies"
+msgstr "externe Assemblies"
 
 msgid "Conference__mail_footer__help"
 msgstr "Text, welcher am Ende einer Nachricht angehängt wird (z.B. in E-Mails)"
@@ -829,10 +829,10 @@ msgstr "Standard-Bild für Veranstaltungen in diesem Track wenn diese kein eigen
 msgid "ConferenceTrack__banner_image"
 msgstr "Standard-Banner"
 
-msgid "ConferenceNavigationItem__url__missingseparator"
+msgid "ConferenceNavigationItem__url__missing_separator"
 msgstr "Dies ist keine URL (es fehlt '://')."
 
-msgid "ConferenceNavigationItem__url__supportedprotocols"
+msgid "ConferenceNavigationItem__url__supported_protocols"
 msgstr "Nicht unterstütztes Protokoll - unterstützt werden: "
 
 msgid "ConferenceNavigationItem"
@@ -1010,7 +1010,7 @@ msgid "Event__favorite_of"
 msgstr "Favorisiert von"
 
 msgid "Event__owner__help"
-msgstr "Nutzer dem diese Veranstaltung gehört (sie angelegt hat), insb. für selbst Organisiertes relevant"
+msgstr "Nutzer dem diese Veranstaltung gehört (sie angelegt hat), insbesondere für selbst Organisiertes relevant"
 
 msgid "Event__owner"
 msgstr "Eigentümer"
@@ -1045,7 +1045,7 @@ msgid "Event__schedule_start__non_empty %(event_type)s"
 msgstr "Eine öffentliche %(event_type)s muss einen Begin haben!"
 
 #, python-format
-msgid "Event__schedule_start__outside_conference_timeframe %(event_type)s"
+msgid "Event__schedule_start__outside_conference_time_frame %(event_type)s"
 msgstr "Diese %(event_type)s würde außerhalb des Zeitraums der Konferenz starten."
 
 #, python-format
@@ -1320,10 +1320,10 @@ msgstr "Datum/Zeit der Nachricht"
 msgid "DirectMessage__timestamp"
 msgstr "Zeitpunkt"
 
-msgid "DirectMessage__autodelete_after__help"
+msgid "DirectMessage__auto_delete_after__help"
 msgstr "Nach diesem Zeitpunkt wird die Nachricht automatisch beim nächsten Reinigungslauf gelöscht."
 
-msgid "DirectMessage__autodelete_after"
+msgid "DirectMessage__auto_delete_after"
 msgstr "löschen nach"
 
 msgid "DirectMessage__in_reply_to__help"
@@ -1369,7 +1369,7 @@ msgid "DirectMessage__has_responded"
 msgstr "beantwortet"
 
 msgid "DirectMessage__flagged_for_abuse__help"
-msgstr "Die Nachricht wurde als missbräulich gekennzeichnet."
+msgstr "Die Nachricht wurde als missbräuchlich gekennzeichnet."
 
 msgid "DirectMessage__flagged_for_abuse"
 msgstr "Spam"
@@ -1422,7 +1422,7 @@ msgstr "Ziel des Links beim Klicken des Eintrags"
 msgid "MetaNavItem__url"
 msgstr "URL"
 
-msgid "MetaNavItem__url__requiredabsolute"
+msgid "MetaNavItem__url__required_absolute"
 msgstr "Die URL muss absolut sein, relative URLs ergeben keinen Sinn für die Meta-Navigation!"
 
 msgid "MetaNavItem__url__necessary_when_shown"
@@ -1447,7 +1447,7 @@ msgid "StaticPageNamespace__prefix"
 msgstr "Präfix"
 
 msgid "StaticPageNamespace__groups__help"
-msgstr "Liste der für diesen Namespace berechtigten Gruppen (komma-separiert)."
+msgstr "Liste der für diesen Namespace berechtigten Gruppen (Komma-separiert)."
 
 msgid "StaticPageNamespace__groups"
 msgstr "Gruppen"
@@ -1474,7 +1474,7 @@ msgid "StaticPage__privacy-none"
 msgstr "Öffentlich"
 
 msgid "StaticPage__privacy-conf"
-msgstr "Nur Eventbesucher"
+msgstr "Nur Event-Besucher"
 
 msgid "StaticPage__privacy-perm"
 msgstr "Nur Organisatoren"
@@ -1539,7 +1539,7 @@ msgstr "Wiki-Seite"
 msgid "StaticPages"
 msgstr "Wiki-Seiten"
 
-msgid "StaticPage__public_revision__notfound"
+msgid "StaticPage__public_revision__not_found"
 msgstr "Die angegebene Revision existiert nicht oder gehört nicht zu dieser Seite."
 
 msgid "StaticPageRevision__title__help"
@@ -1630,31 +1630,31 @@ msgstr "Es muss entweder ein Eigentümer oder eine Assembly angegeben werden. (M
 msgid "Project__owner_and_assembly_not_allowed"
 msgstr "Es muss entweder ein Besitzer oder eine Assembly gewählt werden, beides ist nicht erlaubt."
 
-msgid "Room__type-lecturehall"
+msgid "Room__type__lecture_hall"
 msgstr "Vorlesungssaal"
 
-msgid "Room__type-stage"
+msgid "Room__type__stage"
 msgstr "Bühne"
 
-msgid "Room__type-workshop"
+msgid "Room__type__workshop"
 msgstr "Workshop"
 
-msgid "Room__type-outside"
+msgid "Room__type__outside"
 msgstr "draußen"
 
-msgid "Room__type-online"
+msgid "Room__type__online"
 msgstr "online"
 
-msgid "Room__type-project"
+msgid "Room__type__project"
 msgstr "Projekt"
 
-msgid "Room__type-bbb"
+msgid "Room__type__bbb"
 msgstr "BigBlueButton"
 
-msgid "Room__type-hangar"
+msgid "Room__type__hangar"
 msgstr "Hangar"
 
-msgid "Room__type-other"
+msgid "Room__type__other"
 msgstr "andere"
 
 #, python-format
@@ -1779,7 +1779,7 @@ msgid "Room__recording_state"
 msgstr "Aufnahmestatus"
 
 #, fuzzy
-#| msgid "Room__type-project"
+#| msgid "Room__type__project"
 msgid "Room__type_project_not_allowed"
 msgstr "Projekt"
 
@@ -1813,10 +1813,10 @@ msgstr "Die Freigabe gilt für diese eine Assembly."
 msgid "RoomShare__single_assembly"
 msgstr "Assembly"
 
-msgid "RoomShare__timeframe__help"
+msgid "RoomShare__time_frame__help"
 msgstr "Start- und Endzeitpunkt zwischen denen der Raum freigegeben wird. Die Angabe ist optional, leere Angabe bedeutet \"immer\"."
 
-msgid "RoomShare__timeframe"
+msgid "RoomShare__time_frame"
 msgstr "Zeitfenster"
 
 msgid "RoomShare__all_and_single_assembly_fail"
@@ -1825,7 +1825,7 @@ msgstr "Es ergibt keinen Sinn, die Option \"alle Assemblies\" mit der Auswahl ei
 msgid "RoomShare__at_least_one_option"
 msgstr "Es muss mindestens ein Freigabe-Ziel (einzelne Assembly, alle Assemblies und/oder Self-Organized-Sessions) ausgewählt werden."
 
-msgid "RoomLink__link__mustbeurl"
+msgid "RoomLink__link__must_be_url"
 msgstr "Das Link-Ziel muss eine gültige URL sein."
 
 msgid "ScheduleSource__import_type__help"
@@ -1841,7 +1841,7 @@ msgid "ScheduleSource__import_url"
 msgstr "URL"
 
 msgid "ScheduleSource__import_configuration__help"
-msgstr "nur für Experten: implementationsspezifische Konfiguration"
+msgstr "nur für Experten: Implementierungs-spezifische Konfiguration"
 
 msgid "ScheduleSource__import_configuration"
 msgstr "Konfiguration"
@@ -1995,7 +1995,7 @@ msgid "PlatformUser__type-human"
 msgstr "Mensch"
 
 msgid "PlatformUser__type-speaker"
-msgstr "Vortragender (autom. importiert)"
+msgstr "Vortragender (automatisch importiert)"
 
 msgid "PlatformUser__type-service"
 msgstr "Dienst (Service)"
@@ -2081,10 +2081,10 @@ msgstr "Farbschema mit hohem Kontrast wählen"
 msgid "PlatformUser__high_contrast"
 msgstr "hoher Kontrast"
 
-msgid "PlatformUser__tag_ignorelist__help"
+msgid "PlatformUser__tag_ignore_list__help"
 msgstr "Vorträge, Assemblies, etc. mit diesen Tags werden ausgeblendet."
 
-msgid "PlatformUser__tag_ignorelist"
+msgid "PlatformUser__tag_ignore_list"
 msgstr "Tags ignorieren"
 
 msgid "PlatformUser__theme"
@@ -2129,11 +2129,11 @@ msgstr "Zeigt dem User auf jeder Seite diese Nachricht an"
 msgid "PlatformUser__admin_notification"
 msgstr "Admin Notification"
 
-msgid "PlatformUser__autoaccept_contacts__help"
+msgid "PlatformUser__auto_accept_contacts__help"
 msgstr "Kontaktanfragen automatisch akzeptieren"
 
-msgid "PlatformUser__autoaccept_contacts"
-msgstr "autom. akzeptieren"
+msgid "PlatformUser__auto_accept_contacts"
+msgstr "automatisch akzeptieren"
 
 msgid "PlatformUser__is_searchable__help"
 msgstr "soll der Nutzer in der Suche angezeigt werden"
@@ -2372,7 +2372,7 @@ msgstr "Zeitpunkt wann die Zuordnung stattgefunden hat"
 msgid "VoucherEntry__assigned"
 msgstr "zugeordnet"
 
-msgid "VoucherEntry__assigned__needtarget"
+msgid "VoucherEntry__assigned__need_target"
 msgstr "Es ist eine Zuordnung (Assembly/Channel/Nutzer) notwendig wenn ein Zeitpunkt gesetzt werden soll!"
 
 msgid "VoucherEntry__already_assigned"
@@ -2384,11 +2384,11 @@ msgstr "Du bist Teilnehmer:in von {name}."
 msgid "SSO__svc_angels"
 msgstr "Backend-Services Engelsystem @ {slug}"
 
-msgid "SSO__svc_usermgmt"
+msgid "SSO__svc_user_mgmt"
 msgstr "Deinen {slug}-Benutzerstatus setzen."
 
 msgid "SSO__authorize"
-msgstr "Authorisieren von"
+msgstr "Autorisieren von"
 
 msgid "SSO__authorize_scopes"
 msgstr "Die Seite möchte folgendes wissen:"
@@ -2403,7 +2403,7 @@ msgid "SSO__authorize_accept"
 msgstr "akzeptieren"
 
 msgid "SSO__out_of_band_noscript"
-msgstr "Bitte kopiere nun das Token in das Program, welches die Authentifikation angefragt hat. Du kannst das Token in der Adress Zeile zwischen '#code=' und '&' finden."
+msgstr "Bitte kopiere nun das Token in das Program, welches die Authentifikation angefragt hat. Du kannst das Token in der Adress-Zeile zwischen '#code=' und '&' finden."
 
 msgid "SSO__out_of_band"
 msgstr "Bitte kopiere nun das Token in die Anwendung, welche die Authentifikation angefragt hat."
@@ -2418,7 +2418,7 @@ msgid ""
 "Please use the following link and choose a new password:\n"
 msgstr ""
 "\n"
-"Du erhältst diese E-Mail, weil du ein neues Passwort für dein Benutzerkonto bei %(site_name_safe)sbeantragt hast.\n"
+"Du erhältst diese E-Mail, weil du ein neues Passwort für dein Benutzerkonto bei %(site_name_safe)s beantragt hast.\n"
 "Bitte benutze den folgenden Link um ein neues Passwort zu wählen:\n"
 
 #, python-format
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index 3cb4a899bfe016ae16ef16fcd93646cf2a65bbe0..608a666a79bb31b449a9466da58b8defb0ad87f2 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -131,7 +131,7 @@ msgstr "Your contact email for this event (not public)"
 msgid "Registration__rate-limited"
 msgstr "Too many requests (Rate-Limited), please wait a moment!"
 
-msgid "Registration__username__nounderscore"
+msgid "Registration__username__no_underscore"
 msgstr "The username must not begin with an underscore."
 
 msgid "Conference__is_public__unchangeable"
@@ -186,7 +186,7 @@ msgid "ActivityLogEntry__kind-entity"
 msgstr "entity"
 
 msgid "ActivityLogEntry__kind-other"
-msgstr "õther"
+msgstr "other"
 
 msgid "ActivityLogEntry__user__help"
 msgstr "user which triggered the logged activity"
@@ -257,13 +257,13 @@ msgstr "arrived (self-announced)"
 msgid "Assembly__state-arrived_confirmed"
 msgstr "arrived (confirmed)"
 
-msgid "Assembly__hierarchy-regular"
+msgid "Assembly__hierarchy__regular"
 msgstr "regular"
 
-msgid "Assembly__hierarchy-cluster"
+msgid "Assembly__hierarchy__cluster"
 msgstr "habitat"
 
-msgid "Assembly__hierarchy-clusterrestricted"
+msgid "Assembly__hierarchy__cluster_restricted"
 msgstr "habitat (non-public)"
 
 msgid "Assembly__slug__help"
@@ -466,7 +466,7 @@ msgid "AssemblyMember__is_technical_contact"
 msgstr "technical contact"
 
 msgid "AssemblyMember__show_public__help"
-msgstr "Shall the membership be shown publically?"
+msgstr "Shall the membership be shown publicly?"
 
 msgid "AssemblyMember__show_public"
 msgstr "is public"
@@ -619,25 +619,25 @@ msgstr " When you accept a new badge, it will be displayed with this visibility
 msgid "ConferenceMember__default_badge_visibility"
 msgstr "visibility of new badges"
 
-msgid "ConferenceMember__permission-confernece_admin"
+msgid "ConferenceMember__permission__conference_admin"
 msgstr "Conference admin: can manage the conference's publication times"
 
-msgid "ConferenceMember__permission-assembly_team"
+msgid "ConferenceMember__permission__assembly_team"
 msgstr "assemblies team: manage all assemblies, see also incomplete and rejected registrations"
 
-msgid "ConferenceMember__permission-assembly_registration_admin"
+msgid "ConferenceMember__permission__assembly_registration_admin"
 msgstr "Registration-Admin: Manage registration information for assemblies"
 
-msgid "ConferenceMember__permission-static_pages"
+msgid "ConferenceMember__permission__static_pages"
 msgstr "static pages: manage information pages"
 
-msgid "ConferenceMember__permission-map_edit"
+msgid "ConferenceMember__permission__map_edit"
 msgstr "edit the map (POIs)"
 
-msgid "ConferenceMember__permission-voucher_admin"
+msgid "ConferenceMember__permission__voucher_admin"
 msgstr "manage vouchers"
 
-msgid "ConferenceMember__permission-scheduleadmin"
+msgid "ConferenceMember__permission__schedule_admin"
 msgstr "manage/debug schedule source imports"
 
 msgid "Conference"
@@ -659,7 +659,7 @@ msgid "Conference__name"
 msgstr "name"
 
 msgid "Conference__is_public__help"
-msgstr "show this conference publically"
+msgstr "show this conference publicly"
 
 msgid "Conference__is_public"
 msgstr "is public"
@@ -818,7 +818,7 @@ msgid "ConferenceTrack__color"
 msgstr "color"
 
 msgid "ConferenceTrack__is_public__help"
-msgstr "show this track publically (not an internal one)"
+msgstr "show this track publicly (not an internal one)"
 
 msgid "ConferenceTrack__is_public"
 msgstr "is public"
@@ -829,10 +829,10 @@ msgstr "representational image for events in this track which do not provide the
 msgid "ConferenceTrack__banner_image"
 msgstr "default banner"
 
-msgid "ConferenceNavigationItem__url__missingseparator"
+msgid "ConferenceNavigationItem__url__missing_separator"
 msgstr "This is not an URL (you are missing '://')."
 
-msgid "ConferenceNavigationItem__url__supportedprotocols"
+msgid "ConferenceNavigationItem__url__supported_protocols"
 msgstr "Unsupported protocol, supported are: "
 
 msgid "ConferenceNavigationItem"
@@ -944,13 +944,13 @@ msgid "Event__language"
 msgstr "language"
 
 msgid "Event__abstract__help"
-msgstr "teaser text for this event, one paragraph without markup (will be shown publically)"
+msgstr "teaser text for this event, one paragraph without markup (will be shown publicly)"
 
 msgid "Event__abstract"
 msgstr "abstract"
 
 msgid "Event__description__help"
-msgstr "what happens in this event (will be shown publically, together with abstract)"
+msgstr "what happens in this event (will be shown publicly, together with abstract)"
 
 msgid "Event__description"
 msgstr "description"
@@ -1045,7 +1045,7 @@ msgid "Event__schedule_start__non_empty %(event_type)s"
 msgstr "Start of public %(event_type)ss must be set!"
 
 #, python-format
-msgid "Event__schedule_start__outside_conference_timeframe %(event_type)s"
+msgid "Event__schedule_start__outside_conference_time_frame %(event_type)s"
 msgstr "Your  %(event_type)s starts outside the conference's time frame."
 
 #, python-format
@@ -1069,11 +1069,11 @@ msgid "Event__is_public__conference_has_no_start %(event_type)s"
 msgstr "The conference has no start date yet, %(event_type)ss cannot be published."
 
 msgid "Event__room__unavailable"
-msgstr "The selected room is not available (in the selected timeframe)."
+msgstr "The selected room is not available (in the selected time-frame)."
 
 #, python-format
 msgid "Event__room__colliding_events_%(slugs)s"
-msgstr "There are already events in the selected room at the selected timeframe: %(slugs)s"
+msgstr "There are already events in the selected room at the selected time-frame: %(slugs)s"
 
 #, python-format
 msgid "Event__room__colliding_events_plus%(count)dhidden"
@@ -1122,7 +1122,7 @@ msgid "EventParticipant__is_accepted"
 msgstr "accepted"
 
 msgid "EventParticipant__is_public__help"
-msgstr "show participation publically"
+msgstr "show participation publicly"
 
 msgid "EventParticipant__is_public"
 msgstr "public"
@@ -1320,10 +1320,10 @@ msgstr "date and time of this message"
 msgid "DirectMessage__timestamp"
 msgstr "timestamp"
 
-msgid "DirectMessage__autodelete_after__help"
+msgid "DirectMessage__auto_delete_after__help"
 msgstr "This message will be deleted during the next cleanup run after this timestamp."
 
-msgid "DirectMessage__autodelete_after"
+msgid "DirectMessage__auto_delete_after"
 msgstr "delete after"
 
 msgid "DirectMessage__in_reply_to__help"
@@ -1422,7 +1422,7 @@ msgstr "target URL"
 msgid "MetaNavItem__url"
 msgstr "URL"
 
-msgid "MetaNavItem__url__requiredabsolute"
+msgid "MetaNavItem__url__required_absolute"
 msgstr "The URL must be absolute, a relative URL does not make sense in the meta-navigation!"
 
 msgid "MetaNavItem__url__necessary_when_shown"
@@ -1539,7 +1539,7 @@ msgstr "wiki page"
 msgid "StaticPages"
 msgstr "wiki pages"
 
-msgid "StaticPage__public_revision__notfound"
+msgid "StaticPage__public_revision__not_found"
 msgstr "The revision could not be found or is not associated with this page."
 
 msgid "StaticPageRevision__title__help"
@@ -1607,7 +1607,7 @@ msgid "Project__blocked"
 msgstr "blocked"
 
 msgid "Project__description__help"
-msgstr "what happens in this project (will be shown publically)"
+msgstr "what happens in this project (will be shown publicly)"
 
 msgid "Project__description"
 msgstr "description"
@@ -1630,31 +1630,31 @@ msgstr "Either a owner or an assembly must be provided. (Mutually exclusive)"
 msgid "Project__owner_and_assembly_not_allowed"
 msgstr "Either a owner or an assembly must be chosen, both are not allowed."
 
-msgid "Room__type-lecturehall"
+msgid "Room__type__lecture_hall"
 msgstr "lecture hall"
 
-msgid "Room__type-stage"
+msgid "Room__type__stage"
 msgstr "stage"
 
-msgid "Room__type-workshop"
+msgid "Room__type__workshop"
 msgstr "workshop room"
 
-msgid "Room__type-outside"
+msgid "Room__type__outside"
 msgstr "outside"
 
-msgid "Room__type-online"
+msgid "Room__type__online"
 msgstr "online"
 
-msgid "Room__type-project"
+msgid "Room__type__project"
 msgstr "project"
 
-msgid "Room__type-bbb"
+msgid "Room__type__bbb"
 msgstr "BigBlueButton"
 
-msgid "Room__type-hangar"
+msgid "Room__type__hangar"
 msgstr "hangar"
 
-msgid "Room__type-other"
+msgid "Room__type__other"
 msgstr "other"
 
 #, fuzzy, python-format
@@ -1811,11 +1811,11 @@ msgstr "The room is available to this specific (single) assembly."
 msgid "RoomShare__single_assembly"
 msgstr "single assembly"
 
-msgid "RoomShare__timeframe__help"
+msgid "RoomShare__time_frame__help"
 msgstr "optional: start and end point in time between which the share is active"
 
-msgid "RoomShare__timeframe"
-msgstr "timeframe"
+msgid "RoomShare__time_frame"
+msgstr "time-frame"
 
 msgid "RoomShare__all_and_single_assembly_fail"
 msgstr "It does not make sense to combine the options \"all assemblies\" with the selection of a single assembly."
@@ -1823,7 +1823,7 @@ msgstr "It does not make sense to combine the options \"all assemblies\" with th
 msgid "RoomShare__at_least_one_option"
 msgstr "You must choose at least one share recipient (single assembly, all assemblies and/or self-organized sessions)."
 
-msgid "RoomLink__link__mustbeurl"
+msgid "RoomLink__link__must_be_url"
 msgstr "The link target must be a URL."
 
 msgid "ScheduleSource__import_type__help"
@@ -1950,7 +1950,7 @@ msgid "ConferenceTag__slug"
 msgstr "slug"
 
 msgid "ConferenceTag__is_public__help"
-msgstr "show this tag publically"
+msgstr "show this tag publicly"
 
 msgid "ConferenceTag__is_public"
 msgstr "is public"
@@ -1962,7 +1962,7 @@ msgid "ConferenceTag__value_type"
 msgstr "type"
 
 msgid "ConferenceTag__description__help"
-msgstr "additional explaination of this tag"
+msgstr "additional explanation of this tag"
 
 msgid "ConferenceTag__description"
 msgstr "description"
@@ -2079,10 +2079,10 @@ msgstr "use a colorscheme with high contrasts"
 msgid "PlatformUser__high_contrast"
 msgstr "high contrast"
 
-msgid "PlatformUser__tag_ignorelist__help"
+msgid "PlatformUser__tag_ignore_list__help"
 msgstr "presentations, assemblies, etc. with these tags will be hidden"
 
-msgid "PlatformUser__tag_ignorelist"
+msgid "PlatformUser__tag_ignore_list"
 msgstr "ignored tags"
 
 msgid "PlatformUser__theme"
@@ -2127,10 +2127,10 @@ msgstr "shows the user this message on every page"
 msgid "PlatformUser__admin_notification"
 msgstr "admin notification"
 
-msgid "PlatformUser__autoaccept_contacts__help"
+msgid "PlatformUser__auto_accept_contacts__help"
 msgstr "automatically accept incoming contact requests"
 
-msgid "PlatformUser__autoaccept_contacts"
+msgid "PlatformUser__auto_accept_contacts"
 msgstr "auto-accept"
 
 msgid "PlatformUser__is_searchable__help"
@@ -2239,7 +2239,7 @@ msgid "UserCommunicationChannel__use_for_notifications"
 msgstr "notifications"
 
 msgid "UserCommunicationChannel__show_public__help"
-msgstr "show this address publically"
+msgstr "show this address publicly"
 
 msgid "UserCommunicationChannel__show_public"
 msgstr "public"
@@ -2370,7 +2370,7 @@ msgstr "when was this voucher entry assigned to the target"
 msgid "VoucherEntry__assigned"
 msgstr "assigned"
 
-msgid "VoucherEntry__assigned__needtarget"
+msgid "VoucherEntry__assigned__need_target"
 msgstr "Need an assigned target when setting an 'assigned' timestamp."
 
 msgid "VoucherEntry__already_assigned"
@@ -2382,7 +2382,7 @@ msgstr "You are a participant of {name}."
 msgid "SSO__svc_angels"
 msgstr "Engelsystem Backend service @ {slug}"
 
-msgid "SSO__svc_usermgmt"
+msgid "SSO__svc_user_mgmt"
 msgstr "Set your user status at {name}."
 
 msgid "SSO__authorize"
diff --git a/src/core/management/commands/serviceusers.py b/src/core/management/commands/serviceusers.py
index d298295db2e8548ea8a50cbba12f8c3c2f6e72e1..70aa63443b2dfdc71a05b83ac774686a5eb1b123 100644
--- a/src/core/management/commands/serviceusers.py
+++ b/src/core/management/commands/serviceusers.py
@@ -11,10 +11,10 @@ class Command(BaseCommand):
     def handle(self, *args, **options):
         total_tokens, new_tokens = 0, 0
         for u in PlatformUser.objects.filter(user_type='service'):
-            token, newtoken = Token.objects.get_or_create(user=u)
+            token, new_token = Token.objects.get_or_create(user=u)
             total_tokens += 1
 
-            if newtoken:
+            if new_token:
                 new_tokens += 1
                 style = self.style.WARNING
             else:
diff --git a/src/core/migrations/0164_alter_translation_keys.py b/src/core/migrations/0164_alter_translation_keys.py
new file mode 100644
index 0000000000000000000000000000000000000000..200bb311df358c36c692f5ce7ca615798eefe86d
--- /dev/null
+++ b/src/core/migrations/0164_alter_translation_keys.py
@@ -0,0 +1,112 @@
+# Generated by Django 5.1.3 on 2024-12-07 01:11
+
+import django.contrib.postgres.fields
+import django.contrib.postgres.fields.ranges
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("core", "0163_alter_invitation_options"),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name="conferencemember",
+            options={
+                "permissions": [
+                    (
+                        "conference_admin",
+                        "ConferenceMember__permission__conference_admin",
+                    ),
+                    ("assembly_team", "ConferenceMember__permission__assembly_team"),
+                    (
+                        "assembly_registration_admin",
+                        "ConferenceMember__permission__assembly_registration_admin",
+                    ),
+                    ("static_pages", "ConferenceMember__permission__static_pages"),
+                    ("map_edit", "ConferenceMember__permission__map_edit"),
+                    ("moderation", "Orga: Moderation"),
+                    ("voucher_admin", "ConferenceMember__permission__voucher_admin"),
+                    ("scheduleadmin", "ConferenceMember__permission__schedule_admin"),
+                ]
+            },
+        ),
+        migrations.AlterField(
+            model_name="assembly",
+            name="hierarchy",
+            field=models.CharField(
+                choices=[
+                    ("regular", "Assembly__hierarchy__regular"),
+                    ("cluster", "Assembly__hierarchy__cluster"),
+                    ("clusterrestricted", "Assembly__hierarchy__cluster_restricted"),
+                ],
+                default="regular",
+                help_text="Assembly__hierarchy__help",
+                max_length=20,
+                verbose_name="Assembly__hierarchy",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="directmessage",
+            name="autodelete_after",
+            field=models.DateTimeField(
+                blank=True,
+                help_text="DirectMessage__auto_delete_after__help",
+                null=True,
+                verbose_name="DirectMessage__auto_delete_after",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="platformuser",
+            name="autoaccept_contacts",
+            field=models.BooleanField(
+                default=False,
+                help_text="PlatformUser__auto_accept_contacts__help",
+                verbose_name="PlatformUser__auto_accept_contacts",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="platformuser",
+            name="tag_ignorelist",
+            field=django.contrib.postgres.fields.ArrayField(
+                base_field=models.SlugField(),
+                blank=True,
+                default=list,
+                help_text="PlatformUser__tag_ignore_list__help",
+                size=None,
+                verbose_name="PlatformUser__tag_ignore_list",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="room",
+            name="room_type",
+            field=models.CharField(
+                choices=[
+                    ("lecturehall", "Room__type__lecture_hall"),
+                    ("stage", "Room__type__stage"),
+                    ("workshop", "Room__type__workshop"),
+                    ("outside", "Room__type__outside"),
+                    ("online", "Room__type__online"),
+                    ("project", "Room__type__project"),
+                    ("bbb", "Room__type__bbb"),
+                    ("hangar", "Room__type__hangar"),
+                    ("other", "Room__type__other"),
+                ],
+                help_text="Room__type__help",
+                max_length=20,
+                verbose_name="Room__type",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="roomshare",
+            name="timeframe",
+            field=django.contrib.postgres.fields.ranges.DateTimeRangeField(
+                blank=True,
+                help_text="RoomShare__time_frame__help",
+                null=True,
+                verbose_name="RoomShare__time_frame",
+            ),
+        ),
+    ]
diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py
index 36c01d31669464a460dce2f3ed9864ff326108e8..c8e95327e0a37ffeb0982043ceb01c1611232f58 100644
--- a/src/core/models/assemblies.py
+++ b/src/core/models/assemblies.py
@@ -109,9 +109,9 @@ class Assembly(TaggedItemMixin, ActivityLogMixin, RulesModel):
         ARRIVED_CONFIRMED = 'confirmed', _('Assembly__state-arrived_confirmed')
 
     class Hierarchy(models.TextChoices):
-        REGULAR = 'regular', _('Assembly__hierarchy-regular')
-        CLUSTER = 'cluster', _('Assembly__hierarchy-cluster')
-        CLUSTER_RESTRICTED = 'clusterrestricted', _('Assembly__hierarchy-clusterrestricted')
+        REGULAR = 'regular', _('Assembly__hierarchy__regular')
+        CLUSTER = 'cluster', _('Assembly__hierarchy__cluster')
+        CLUSTER_RESTRICTED = 'clusterrestricted', _('Assembly__hierarchy__cluster_restricted')
 
     objects = AssemblyManager()
     logger = logging.getLogger(__name__)
diff --git a/src/core/models/conference.py b/src/core/models/conference.py
index 250bb63eaf87b0ab21f474336b137c3c900b0596..02c7c5393dc9d8c22720afd1f4cd164fc07b7675 100644
--- a/src/core/models/conference.py
+++ b/src/core/models/conference.py
@@ -78,21 +78,21 @@ class ConferenceMember(models.Model):
 
     class Meta:
         permissions = [
-            ('conference_admin', _('ConferenceMember__permission-confernece_admin')),
+            ('conference_admin', _('ConferenceMember__permission__conference_admin')),
             # Change conference settings (e.g., dates, ), update venue json.
-            ('assembly_team', _('ConferenceMember__permission-assembly_team')),
+            ('assembly_team', _('ConferenceMember__permission__assembly_team')),
             # See all assemblies, not only the accepted ones.
-            ('assembly_registration_admin', _('ConferenceMember__permission-assembly_registration_admin')),
+            ('assembly_registration_admin', _('ConferenceMember__permission__assembly_registration_admin')),
             # See all assemblies, not only the accepted ones.
-            ('static_pages', _('ConferenceMember__permission-static_pages')),
+            ('static_pages', _('ConferenceMember__permission__static_pages')),
             # Access to static pages, can be further limited by configuring static_page_groups.
-            ('map_edit', _('ConferenceMember__permission-map_edit')),
+            ('map_edit', _('ConferenceMember__permission__map_edit')),
             # modification of the map, i.e. POIs
             ('moderation', 'Orga: Moderation'),
             # moderation of all content
-            ('voucher_admin', _('ConferenceMember__permission-voucher_admin')),
+            ('voucher_admin', _('ConferenceMember__permission__voucher_admin')),
             # configure conference's vouchers
-            ('scheduleadmin', _('ConferenceMember__permission-scheduleadmin')),
+            ('scheduleadmin', _('ConferenceMember__permission__schedule_admin')),
             # manage/support ScheduleSupports globally, i.e. without access to an individual assembly
         ]
 
@@ -828,7 +828,7 @@ class ConferenceExportCache(models.Model):
 
 def validate_conferencenavigationitem_url(value: str) -> None:
     if '://' not in value:
-        raise ValidationError(_('ConferenceNavigationItem__url__missingseparator'))
+        raise ValidationError(_('ConferenceNavigationItem__url__missing_separator'))
 
     _valid_protocols = ['assembly', 'event', 'conference', 'wiki']
 
@@ -840,7 +840,7 @@ def validate_conferencenavigationitem_url(value: str) -> None:
     elif protocol in ['http', 'https']:
         URLValidator()(value)
     else:
-        raise ValidationError(_('ConferenceNavigationItem__url__supportedprotocols') + 'http, https, ' + ', '.join(_valid_protocols))
+        raise ValidationError(_('ConferenceNavigationItem__url__supported_protocols') + 'http, https, ' + ', '.join(_valid_protocols))
 
 
 class ConferenceNavigationItem(models.Model):
diff --git a/src/core/models/events.py b/src/core/models/events.py
index 2a6de1497858c605de4e0762f6e6c6af30d3f416..d2dfb2f09fddac209126ded5a44ca1b94f9e15f8 100644
--- a/src/core/models/events.py
+++ b/src/core/models/events.py
@@ -504,7 +504,7 @@ class Event(TaggedItemMixin, BackendMixin, ActivityLogMixin, models.Model):
                 self.conference.end is not None and self.conference.end < self.schedule_start
             ):
                 errors['schedule_start'] = ValidationError(
-                    _('Event__schedule_start__outside_conference_timeframe %(event_type)s') % {'event_type': event_type}, code='invalid_date'
+                    _('Event__schedule_start__outside_conference_time_frame %(event_type)s') % {'event_type': event_type}, code='invalid_date'
                 )
 
         # When setting to public we must have a duration
diff --git a/src/core/models/messages.py b/src/core/models/messages.py
index 28e424ce9bac8c3be832245d62b3b2f2ed72875c..a1068959aafa802feaf525d74233790b0aae94b5 100644
--- a/src/core/models/messages.py
+++ b/src/core/models/messages.py
@@ -41,7 +41,7 @@ class DirectMessage(models.Model):
     """Timestamp when the message was sent."""
 
     autodelete_after = models.DateTimeField(
-        blank=True, null=True, help_text=_('DirectMessage__autodelete_after__help'), verbose_name=_('DirectMessage__autodelete_after')
+        blank=True, null=True, help_text=_('DirectMessage__auto_delete_after__help'), verbose_name=_('DirectMessage__auto_delete_after')
     )
     """Automatic purging deletes this message after this timestamp."""
 
diff --git a/src/core/models/metanavi.py b/src/core/models/metanavi.py
index b03b6b7c46086488923b53b384d7bdaca2593636..16369fcb3a0ac71d61dd4c85e34178a290194e97 100644
--- a/src/core/models/metanavi.py
+++ b/src/core/models/metanavi.py
@@ -84,7 +84,7 @@ class MetaNavItem(models.Model):
         if self.url:
             parsed_url = urlparse(self.url)
             if not parsed_url.netloc:
-                errors['url'] = _('MetaNavItem__url__requiredabsolute')
+                errors['url'] = _('MetaNavItem__url__required_absolute')
         elif self.visible and self.enabled:
             errors['url'] = _('MetaNavItem__url__necessary_when_shown')
 
diff --git a/src/core/models/pages.py b/src/core/models/pages.py
index 257ca1333fcafc5d67617ae4ff9a17e657390425..b8b3164ab8a665baf2ba8b15c74c466600179f24 100644
--- a/src/core/models/pages.py
+++ b/src/core/models/pages.py
@@ -334,7 +334,7 @@ class StaticPage(models.Model):
             try:
                 StaticPageRevision.objects.get(page=self, revision=self.public_revision)
             except StaticPageRevision.DoesNotExist:
-                raise ValidationError({'public_revision': _('StaticPage__public_revision__notfound')})
+                raise ValidationError({'public_revision': _('StaticPage__public_revision__not_found')})
         else:
             self.search_content = None
             self.search_vector = None
diff --git a/src/core/models/rooms.py b/src/core/models/rooms.py
index c0a870cd01c010b4f583b0e3305d968fb7e944e9..0ab54546ad3e23d311cb367d608c2e13e593236d 100644
--- a/src/core/models/rooms.py
+++ b/src/core/models/rooms.py
@@ -26,15 +26,15 @@ from core.validators import FileSizeValidator, ImageDimensionValidator
 
 
 class RoomType(models.TextChoices):
-    LECTURE_HALL = 'lecturehall', _('Room__type-lecturehall')
-    STAGE = 'stage', _('Room__type-stage')
-    WORKSHOP = 'workshop', _('Room__type-workshop')
-    OUTSIDE = 'outside', _('Room__type-outside')
-    ONLINE = 'online', _('Room__type-online')
-    PROJECT = 'project', _('Room__type-project')
-    BIGBLUEBUTTON = 'bbb', _('Room__type-bbb')
-    HANGAR = 'hangar', _('Room__type-hangar')
-    OTHER = 'other', _('Room__type-other')
+    LECTURE_HALL = 'lecturehall', _('Room__type__lecture_hall')
+    STAGE = 'stage', _('Room__type__stage')
+    WORKSHOP = 'workshop', _('Room__type__workshop')
+    OUTSIDE = 'outside', _('Room__type__outside')
+    ONLINE = 'online', _('Room__type__online')
+    PROJECT = 'project', _('Room__type__project')
+    BIGBLUEBUTTON = 'bbb', _('Room__type__bbb')
+    HANGAR = 'hangar', _('Room__type__hangar')
+    OTHER = 'other', _('Room__type__other')
 
 
 class RoomManager(ConferenceManagerMixin['Room']):
@@ -408,8 +408,8 @@ class RoomShare(models.Model):
     timeframe = DateTimeRangeField(
         blank=True,
         null=True,
-        help_text=_('RoomShare__timeframe__help'),
-        verbose_name=_('RoomShare__timeframe'),
+        help_text=_('RoomShare__time_frame__help'),
+        verbose_name=_('RoomShare__time_frame'),
     )
 
     def __str__(self):
@@ -487,7 +487,7 @@ class RoomLink(models.Model):
             try:
                 validator(self.link)
             except ValidationError:
-                raise ValidationError({'link': _('RoomLink__link__mustbeurl')})
+                raise ValidationError({'link': _('RoomLink__link__must_be_url')})
 
     def __str__(self):
         return self.name
diff --git a/src/core/models/users.py b/src/core/models/users.py
index 0000022f481fff3371cfeca0869a33016c8f5e97..134d8cc414d51ce4e9f022af77a32f78eea68b56 100644
--- a/src/core/models/users.py
+++ b/src/core/models/users.py
@@ -143,7 +143,7 @@ class PlatformUser(AbstractUser):
     colorblind = models.BooleanField(default=False, help_text=_('PlatformUser__colorblind__help'), verbose_name=_('PlatformUser__colorblind'))
     high_contrast = models.BooleanField(default=False, help_text=_('PlatformUser__high_contrast__help'), verbose_name=_('PlatformUser__high_contrast'))
     tag_ignorelist = pg_fields.ArrayField(
-        models.SlugField(), blank=True, default=list, help_text=_('PlatformUser__tag_ignorelist__help'), verbose_name=_('PlatformUser__tag_ignorelist')
+        models.SlugField(), blank=True, default=list, help_text=_('PlatformUser__tag_ignore_list__help'), verbose_name=_('PlatformUser__tag_ignore_list')
     )
     theme = models.CharField(
         max_length=50, choices=Theme.choices, default=Theme.DARK, verbose_name=_('PlatformUser__theme'), help_text=_('PlatformUser__theme__help')
@@ -168,7 +168,7 @@ class PlatformUser(AbstractUser):
 
     # privacy settings
     autoaccept_contacts = models.BooleanField(
-        default=False, help_text=_('PlatformUser__autoaccept_contacts__help'), verbose_name=_('PlatformUser__autoaccept_contacts')
+        default=False, help_text=_('PlatformUser__auto_accept_contacts__help'), verbose_name=_('PlatformUser__auto_accept_contacts')
     )
 
     is_searchable = models.BooleanField(default=False, help_text=_('PlatformUser__is_searchable__help'), verbose_name=_('PlatformUser__is_searchable'))
diff --git a/src/core/models/voucher.py b/src/core/models/voucher.py
index 1bd1a2fbf593844d1e06539197352ba020882d7b..4d73510e38bfd6d7cfda58ac85f12ddf8d4864fb 100644
--- a/src/core/models/voucher.py
+++ b/src/core/models/voucher.py
@@ -214,7 +214,7 @@ class VoucherEntry(models.Model):
 
         if self.assigned is not None:
             if self.assigned_assembly is None and self.assigned_user is None:
-                errors['assigned'] = _('VoucherEntry__assigned__needtarget')
+                errors['assigned'] = _('VoucherEntry__assigned__need_target')
 
         else:
             # assembly assigned without a timestamp?
diff --git a/src/core/sso.py b/src/core/sso.py
index 75f7e33ee92f567a9070f6fb5fb510a8d751f9e6..ad9913252553722bfe4b6aa00f9fe563a1de20e0 100644
--- a/src/core/sso.py
+++ b/src/core/sso.py
@@ -56,7 +56,7 @@ class OAuth2Scopes(BaseScopes):
         for c in Conference.objects.values('slug', 'name'):
             scopes[c['slug'] + '_attendee'] = format_lazy(_('SSO__conf_attendee'), **c)
             scopes[c['slug'] + '_service_angels'] = format_lazy(_('SSO__svc_angels'), **c)
-            scopes[c['slug'] + '_service_usermgmt'] = format_lazy(_('SSO__svc_usermgmt'), **c)
+            scopes[c['slug'] + '_service_usermgmt'] = format_lazy(_('SSO__svc_user_mgmt'), **c)
 
         return scopes
 
diff --git a/src/plainui/jinja2/plainui/badges/list.html.j2 b/src/plainui/jinja2/plainui/badges/list.html.j2
index 5970a532a22e3d052c9a4a4806793636a9983d1a..e99d29d6ba2832a2275d6aa234c6d8f32969d66d 100644
--- a/src/plainui/jinja2/plainui/badges/list.html.j2
+++ b/src/plainui/jinja2/plainui/badges/list.html.j2
@@ -33,7 +33,7 @@
             <a href="{{ url('plainui:manage_badges') }}" class="hub-btn">{{ _("badge__manage") }}</a>
           </div>
         {% else %}
-          {{ _("archivemode_notavailable") }}
+          {{ _("Archive_mode__not_available") }}
         {% endif %}
       </div>
     </div>
diff --git a/src/plainui/jinja2/plainui/board.html.j2 b/src/plainui/jinja2/plainui/board.html.j2
index 92fe448d1b6171279d488ada4a01fa7caa35b6c4..a53208acd08562ccfd8aae28004718f082193020 100644
--- a/src/plainui/jinja2/plainui/board.html.j2
+++ b/src/plainui/jinja2/plainui/board.html.j2
@@ -72,7 +72,7 @@
         {% if page_obj.has_previous() %}
           <li class="mb-3 mx-3">
             <a href="?page={{ page_obj.previous_page_number() }}"
-               class="btn btn-secondary">{{ _("board--paginage--previous") }}</a>
+               class="btn btn-secondary">{{ _("board--paginate--previous") }}</a>
           </li>
         {%- endif %}
         {% if page_obj.has_next() %}
@@ -85,6 +85,6 @@
     </div>
   {% else %}
     {# archive mode #}
-    {{ _("archivemode_notavailable") }}
+    {{ _("Archive_mode__not_available") }}
   {% endif %}
 {% endblock content %}
diff --git a/src/plainui/jinja2/plainui/components/avatar.html.j2 b/src/plainui/jinja2/plainui/components/avatar.html.j2
index 48ef14e11203024c2b7d03987e9b084906140c69..755ca000722c69ac790185d79329fb672dd0975e 100644
--- a/src/plainui/jinja2/plainui/components/avatar.html.j2
+++ b/src/plainui/jinja2/plainui/components/avatar.html.j2
@@ -1,4 +1,4 @@
-{% macro avatar(user, scope="plattform") -%}
+{% macro avatar(user, scope="platform") -%}
   <figure class="col hub-avatar">
     {% if user and user.avatar %}
       <img class="hub-avatar__img"
@@ -10,7 +10,7 @@
   </figure>
 {%- endmacro %}
 
-{% macro no_avatar(scope="plattform") -%}
+{% macro no_avatar(scope="platform") -%}
   <img class="hub-avatar__none"
        src="{{ static('plainui/img/hub-no-avatar-%s-active.png' % (scope,) ) }}"
        alt="{{ _('Avatar image') }}">
diff --git a/src/plainui/jinja2/plainui/components/badge_elements.html.j2 b/src/plainui/jinja2/plainui/components/badge_elements.html.j2
index f236463e0d1237a9ff23d8ac640d50f9912751c2..1b7fefc13b1c276fc1f46459de153521ce3414d8 100644
--- a/src/plainui/jinja2/plainui/components/badge_elements.html.j2
+++ b/src/plainui/jinja2/plainui/components/badge_elements.html.j2
@@ -12,7 +12,7 @@
         {% else %}
           <img class="card-img-top aspect-ratio-16by9"
                alt="Thumbnail Badge {{ badge_link.badge.name }}"
-               src="{{ static('plainui/img/hub-no-avatar-plattform-active.png') }}"
+               src="{{ static('plainui/img/hub-no-avatar-platform-active.png') }}"
                data-holder-rendered="true">
         {% endif %}
       </div>
diff --git a/src/plainui/jinja2/plainui/components/buttons.html.j2 b/src/plainui/jinja2/plainui/components/buttons.html.j2
index af194370d96d22f7c0e444b7dead85bac8695d47..f6ea6398ea74ef47080c2e74270eb3dc3fc478f0 100644
--- a/src/plainui/jinja2/plainui/components/buttons.html.j2
+++ b/src/plainui/jinja2/plainui/components/buttons.html.j2
@@ -1,6 +1,6 @@
 {% macro primary(label, link, icon=None) -%}
   <a class="hub-btn" href="{{ link }}">
     {% if icon %}<i class="bi bi-{{ icon }}"></i>{% endif %}
-    {{ _("index__box-whatshappening__fahrplanlink") }}
+    {{ _("index__box-whats_happening__fahrplan_link") }}
   </a>
 {%- endmacro %}
diff --git a/src/plainui/jinja2/plainui/components/event_info.html.j2 b/src/plainui/jinja2/plainui/components/event_info.html.j2
index 9a79f158c19f95357ab89859390d69b654c1be83..8749a292d069a5331a67e7173e1ce953f548b2c9 100644
--- a/src/plainui/jinja2/plainui/components/event_info.html.j2
+++ b/src/plainui/jinja2/plainui/components/event_info.html.j2
@@ -33,7 +33,7 @@
           {{ speaker }}
           {% if not loop.last %},{% endif %}
         {% else %}
-          {{ _("No Speakers publicated yet") }}
+          {{ _("No Speakers published yet") }}
         {% endfor %}
 
         {% if event.abstract %}<div class="hub-text">{{ event.abstract }}</div>{% endif %}
diff --git a/src/plainui/jinja2/plainui/components/list_events.html.j2 b/src/plainui/jinja2/plainui/components/list_events.html.j2
index be7ff4bbb911152e611bafaba2fa82012eb52f17..9c3e178086a26a940e7655bead22a5cb966bc9dc 100644
--- a/src/plainui/jinja2/plainui/components/list_events.html.j2
+++ b/src/plainui/jinja2/plainui/components/list_events.html.j2
@@ -339,7 +339,7 @@
       {% if room.next_event %}
         {{ tile(room.next_event, faved=true if room.next_event.id | safe in my_favorite_events, custom_class="flex-lg-grow-1 mb-0") }}
       {% else %}
-        <p class="text-center my-6 flex-lg-grow">{{ _("no entry availaible") }}</p>
+        <p class="text-center my-6 flex-lg-grow">{{ _("no entry available") }}</p>
       {% endif %}
       {% if room.room.id %}
         <a href="{{ url('plainui:room', slug=room.room.slug) }}"
diff --git a/src/plainui/jinja2/plainui/components/list_rooms.html.j2 b/src/plainui/jinja2/plainui/components/list_rooms.html.j2
index 0acb698bc1efec59b9267ce4f0d2dfc273153a8a..11f12e5abbe67be289b151305a165c72e7287a24 100644
--- a/src/plainui/jinja2/plainui/components/list_rooms.html.j2
+++ b/src/plainui/jinja2/plainui/components/list_rooms.html.j2
@@ -24,7 +24,7 @@
   <li class="hub-list-item hub-grid-title-buttons">
     <div class="hub-grid-title">
       <span class="me-3 btn-icon-big"
-            title="{{ _("roomtype") ~ ': ' ~ _(room.room_type) }}">{{ icon(room.room_type) }}</span>
+            title="{{ _("Room__type") ~ ': ' ~ _(room.room_type) }}">{{ icon(room.room_type) }}</span>
       <a href="{{ link }}" title="{{ room.name }}" class="flex-grow-1">{{ room.name }}</a>
     </div>
     <div class="hub-grid-buttons">
diff --git a/src/plainui/jinja2/plainui/components/nav.html.j2 b/src/plainui/jinja2/plainui/components/nav.html.j2
index 6d76e9e4a979afbb9ec97e59c96898194762d676..90acccb2597d93dd9ba9d0f4fcd9238fa8e52c42 100644
--- a/src/plainui/jinja2/plainui/components/nav.html.j2
+++ b/src/plainui/jinja2/plainui/components/nav.html.j2
@@ -48,7 +48,7 @@
           <a class="dropdown-item disabled text-decoration-line-through"
              disabled="disabled"
              href="#"
-             title="{{ _('archivemode_loginlink_hint') }}">Login</a>
+             title="{{ _('archive_mode_login_link_hint') }}">Login</a>
         </li>
       {% elif request.user.is_authenticated %}
         <li>
diff --git a/src/plainui/jinja2/plainui/components/resourcesbox.html.j2 b/src/plainui/jinja2/plainui/components/resourcesbox.html.j2
index 2b30c677186312f71743fe1eb6a2e524b3b97fb6..eefbba15ae290c39afe9acc603cd711ee5715b0e 100644
--- a/src/plainui/jinja2/plainui/components/resourcesbox.html.j2
+++ b/src/plainui/jinja2/plainui/components/resourcesbox.html.j2
@@ -14,7 +14,7 @@
         </ul>
       {% else %}
         <div class="p-3 ps-3 w-100 d-flex flex-row flex-wrap justify-content-start align-items-center">
-          <p>{{ _("no entry availaible") }}</p>
+          <p>{{ _("no entry available") }}</p>
         </div>
       {% endif %}
     </div>
diff --git a/src/plainui/jinja2/plainui/fahrplan.html.j2 b/src/plainui/jinja2/plainui/fahrplan.html.j2
index fbc623201df346467b225b23eafdb84ea12000b1..c24000dc46271b98b62527ca78f51e2cc1b19d13 100644
--- a/src/plainui/jinja2/plainui/fahrplan.html.j2
+++ b/src/plainui/jinja2/plainui/fahrplan.html.j2
@@ -74,7 +74,7 @@
       {{ filter_button('kall', kind == 'all', _("all") ) }}
       {{ filter_button('kofficial' if kind != 'official' else 'kall', kind == 'official', _("curated only") ) }}
       {{ filter_button('kassembly' if kind != 'assembly' else 'kall', kind == 'assembly', _("assembly only") ) }}
-      {{ filter_button('ksos' if kind != 'sos' else 'kall', kind == 'sos', _("selforganized only") ) }}
+      {{ filter_button('ksos' if kind != 'sos' else 'kall', kind == 'sos', _("self_organized only") ) }}
     </div>
 
     <div class="hub-tags mb-2">
diff --git a/src/plainui/jinja2/plainui/index.html.j2 b/src/plainui/jinja2/plainui/index.html.j2
index 5b25fab2714e156607fe6974640b9efa8f0f8c9d..e50510cbee77dfc6aa83ac7e338f113969913c73 100644
--- a/src/plainui/jinja2/plainui/index.html.j2
+++ b/src/plainui/jinja2/plainui/index.html.j2
@@ -35,11 +35,11 @@
       </div>
 
       <div class="hub-col-325px hub-card">
-        <h2 class="hub-section-title">{{ _("index__box-whatshappening__title") }}</h2>
+        <h2 class="hub-section-title">{{ _("index__box-whats_happening__title") }}</h2>
         <div class="hub-vlayout-l">
           {% if conf.is_running %}
             <div>
-              <h3 class="hub-section-title">{{ _("index__box-whatshappening__official") }}</h3>
+              <h3 class="hub-section-title">{{ _("index__box-whats_happening__official") }}</h3>
               {{ list_events.list(upcoming_events_official,
                             is_favorite_events,
                             event_class='hub-event--small',
@@ -47,21 +47,21 @@
             </div>
 
             <div>
-              <h3 class="hub-section-title">{{ _("index__box-whatshappening__selforganized") }}</h3>
-              {{ list_events.list(upcoming_events_selforganized,
+              <h3 class="hub-section-title">{{ _("index__box-whats_happening__self_organized") }}</h3>
+              {{ list_events.list(upcoming_events_self_organized,
                             is_favorite_events,
                             event_class='hub-event--small',
                             hide_buttons=True) }}
             </div>
           {% elif conf.has_ended %}
-            <p>{{ _("index__box-whatshappening__ended") }}</p>
+            <p>{{ _("index__box-whats_happening__ended") }}</p>
           {% else %}
-            <p>{{ _("index__box-whatshappening__waiting") }}</p>
-            <p class="fs-3 fw-bold">{{ _("index__box-whatshappening__day") }} {{ conf.current_day }}</p>
+            <p>{{ _("index__box-whats_happening__waiting") }}</p>
+            <p class="fs-3 fw-bold">{{ _("index__box-whats_happening__day") }} {{ conf.current_day }}</p>
           {% endif %}
         </div>
         <div class="d-flex justify-content-end">
-          {{ buttonsMacro.primary(_('index__box-whatshappening__fahrplanlink') ,
+          {{ buttonsMacro.primary(_('index__box-whats_happening__fahrplan_link') ,
           url('plainui:fahrplan'),
           icon='calendar-week'
           ) }}
diff --git a/src/plainui/jinja2/plainui/login.html.j2 b/src/plainui/jinja2/plainui/login.html.j2
index 9f25baf47ed7664b0e2448b576106f4601a054cc..96d2fd675ad60d67fbf1b0f7fc06dd6714cb3fbc 100644
--- a/src/plainui/jinja2/plainui/login.html.j2
+++ b/src/plainui/jinja2/plainui/login.html.j2
@@ -34,7 +34,7 @@
                  class="btn btn-secondary"
                  title="{{ _('Reset Password') }}">{{ _('Reset Password') }}</a>
             </div>
-            <p class="mb-2 text-white">{{ _("login--cookieinfo") }}</p>
+            <p class="mb-2 text-white">{{ _("login--cookie_info") }}</p>
 
             <hr class="hub-spacer">
             <h3>{{ _("New here?") }}</h3>
@@ -46,7 +46,7 @@
           </div>
         </form>
       {% else %}
-        <p class="mb-2 text-white">{{ _("archivemode_nologin") }}</p>
+        <p class="mb-2 text-white">{{ _("archive_mode_no_login") }}</p>
       {% endif %}
     </div>
 
diff --git a/src/plainui/jinja2/plainui/redeem_token.html.j2 b/src/plainui/jinja2/plainui/redeem_token.html.j2
index 4f302082b9bae4ad47e96eb40342b6972a84fde2..241eef1b2839bdddfe716735151057d231f53437 100644
--- a/src/plainui/jinja2/plainui/redeem_token.html.j2
+++ b/src/plainui/jinja2/plainui/redeem_token.html.j2
@@ -68,7 +68,7 @@
           {{ form_elements.password(form_create, 'password1') }}
           {{ form_elements.password(form_create, 'password2') }}
           <ul class="row row-cols-1 row-cols-lg-3 list-unstyled">
-            <li class="col-auto">{{ _("login--cookieinfo") }}</li>
+            <li class="col-auto">{{ _("login--cookie_info") }}</li>
             <li class="col ml-auto">
               <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">
                 {{ _("Create a new Account with your Ticket") }}
@@ -91,7 +91,7 @@
           {{ form_elements.text(form_add, 'username') }}
           {{ form_elements.password(form_add, 'password') }}
           <ul class="row row-cols-1 row-cols-lg-3 list-unstyled">
-            <li class="col-auto">{{ _("login--cookieinfo") }}</li>
+            <li class="col-auto">{{ _("login--cookie_info") }}</li>
             <li class="col ml-auto">
               <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">
                 {{ _("Add your Ticket to this existing Account") }}
diff --git a/src/plainui/jinja2/plainui/signup.html.j2 b/src/plainui/jinja2/plainui/signup.html.j2
index 58d0f4db8829430c27491fe86229a25224c46555..8403e466121a7cd9b8b1b25572c76284cecc1486 100644
--- a/src/plainui/jinja2/plainui/signup.html.j2
+++ b/src/plainui/jinja2/plainui/signup.html.j2
@@ -34,7 +34,7 @@
         </div>
       </form>
     {% else %}
-      <p class="mb-2 text-white">{{ _("archivemode_nologin") }}</p>
+      <p class="mb-2 text-white">{{ _("archive_mode_no_login") }}</p>
     {% endif %}
 
     <hr class="hub-spacer">
diff --git a/src/plainui/locale/de/LC_MESSAGES/django.po b/src/plainui/locale/de/LC_MESSAGES/django.po
index 68f0907af55bed3c82aaf23f61f2f91ff88a4b1a..b8649d310cd1a92de7387c2bdc3cd5927e3aa45e 100644
--- a/src/plainui/locale/de/LC_MESSAGES/django.po
+++ b/src/plainui/locale/de/LC_MESSAGES/django.po
@@ -21,7 +21,7 @@ msgid "Unknown User!"
 msgstr "Unbekannter Nutzer!"
 
 msgid "Please enter the recipient name"
-msgstr "Bitte den/dei Empfänger*in angeben"
+msgstr "Bitte den Namen der empfangenden Person angeben"
 
 msgid "Please enter a subject"
 msgstr "Bitte einen Betreff eingeben"
@@ -64,10 +64,10 @@ msgid "Unknown User"
 msgstr "Unbekannter Nutzer"
 
 msgid "User is not active!"
-msgstr "User ist nich aktiv"
+msgstr "User ist nicht aktiv"
 
 msgid "User can use password reset by email!"
-msgstr "Paswort über E-Mail reset ist möglich"
+msgstr "Passwort-Reset über E-Mail ist möglich!"
 
 msgid "User didn't use this Ticket!"
 msgstr "Dieser Benutzer ist nicht mit diesem Ticket verknüpft."
@@ -91,7 +91,7 @@ msgid "Wiki__edit__body"
 msgstr "Seiten-Inhalt"
 
 msgid "Wiki__edit__body_help"
-msgstr "Inhalt der auf der Wiki-Seite angezeigt wird. Du kannst Markdown-Syntax nutzen um den Inhalt zu formatieren. Nutze den Vorschau-Button um die formattierte Seite zu sehen."
+msgstr "Inhalt der auf der Wiki-Seite angezeigt wird. Du kannst Markdown-Syntax nutzen um den Inhalt zu formatieren. Nutze den Vorschau-Button um die formatierte Seite zu sehen."
 
 msgid "Assemblies"
 msgstr "Assemblies"
@@ -165,7 +165,7 @@ msgstr "Einlösen"
 msgid "badge__manage"
 msgstr "Badge-Verwaltung"
 
-msgid "archivemode_notavailable"
+msgid "Archive_mode__not_available"
 msgstr "Diese Funktion steht nicht mehr zur Verfügung, da die Webseite archiviert wurde."
 
 msgid "all"
@@ -252,7 +252,7 @@ msgstr "Öffentliches Bulletin Board"
 msgid "New Entry"
 msgstr "Neuer Eintrag"
 
-msgid "board--paginage--previous"
+msgid "board--paginate--previous"
 msgstr "Vorherige Page"
 
 msgid "board--paginate--next"
@@ -306,13 +306,13 @@ msgstr "Badge annehmen"
 msgid "Save visibility"
 msgstr "Sichtbarkeit speichern"
 
-msgid "index__box-whatshappening__fahrplanlink"
+msgid "index__box-whats_happening__fahrplan_link"
 msgstr "Fahrplan anschauen"
 
 msgid "No entries available."
 msgstr "Keine Einträge vorhanden."
 
-msgid "No Speakers publicated yet"
+msgid "No Speakers published yet"
 msgstr "Noch keine Speaker bekannt gegeben"
 
 msgid "Event description"
@@ -382,7 +382,7 @@ msgstr "Streaming"
 msgid "Coming Up Next"
 msgstr "Als nächstes"
 
-msgid "no entry availaible"
+msgid "no entry available"
 msgstr "Keine Einträge vorhanden."
 
 msgid "View next Events"
@@ -391,7 +391,7 @@ msgstr "Nächste Events"
 msgid "projects__list__empty"
 msgstr "Keine Projekte gefunden"
 
-msgid "roomtype"
+msgid "Room__type"
 msgstr "Raum-Typ"
 
 msgid "capacity"
@@ -400,14 +400,14 @@ msgstr "Kapazität"
 msgid "chat"
 msgstr "DNs"
 
-msgid "archivemode_loginlink_hint"
+msgid "archive_mode_login_link_hint"
 msgstr "nicht verfügbar, Seite ist archiviert"
 
 msgid "profile"
 msgstr "Profil"
 
 msgid "Edit your profile"
-msgstr "Dein Profil berarbeiten"
+msgstr "Dein Profil bearbeiten"
 
 msgid "search"
 msgstr "suchen"
@@ -428,7 +428,7 @@ msgid "Hey"
 msgstr "Hey"
 
 msgid "You are leaving the »RC3-area«. For external sites, streams and applications the actual owners are completely and solely responsible regarding data protection, copyright, youth protection, etc.!"
-msgstr "Du verlässt das virtuelle Veranstaltungs-Gelände. Für externe Seiten, Streams und Angebote sind vollinhaltlich die jeweiligen Betreiber in bezug auf Datenschutz, Copyright und Jugendschutz etc. verantwortlich."
+msgstr "Du verlässt das virtuelle Veranstaltungs-Gelände. Für externe Seiten, Streams und Angebote sind vollinhaltlich die jeweiligen Betreiber in Bezug auf Datenschutz, Copyright und Jugendschutz etc. verantwortlich."
 
 msgid "Back"
 msgstr "Zurück"
@@ -467,22 +467,22 @@ msgstr "Liste"
 msgid "fahrplan.filters.calendar"
 msgstr "Kalender"
 
-msgid "index__box-whatshappening__title"
+msgid "index__box-whats_happening__title"
 msgstr "Was findet statt?"
 
-msgid "index__box-whatshappening__official"
+msgid "index__box-whats_happening__official"
 msgstr "offiziell"
 
-msgid "index__box-whatshappening__selforganized"
+msgid "index__box-whats_happening__self_organized"
 msgstr "selbst organisiert"
 
-msgid "index__box-whatshappening__ended"
+msgid "index__box-whats_happening__ended"
 msgstr "Die Konferenz ist zu Ende - schön, dass du dabei warst!"
 
-msgid "index__box-whatshappening__waiting"
+msgid "index__box-whats_happening__waiting"
 msgstr "Die Konferenz beginnt erst noch. Aktuell ist:"
 
-msgid "index__box-whatshappening__day"
+msgid "index__box-whats_happening__day"
 msgstr "Tag"
 
 msgid "platform"
@@ -506,8 +506,8 @@ msgstr "Einloggen"
 msgid "Reset Password"
 msgstr "Passwort zurücksetzen"
 
-msgid "login--cookieinfo"
-msgstr "Hinweis: Wir setzen einen Cookie um deine Sessiondaten zu speichern."
+msgid "login--cookie_info"
+msgstr "Hinweis: Wir setzen einen Cookie um die Daten deiner Sitzung zu speichern."
 
 msgid "New here?"
 msgstr "Neu hier?"
@@ -515,7 +515,7 @@ msgstr "Neu hier?"
 msgid "sign up (new account)"
 msgstr "Account anlegen"
 
-msgid "archivemode_nologin"
+msgid "archive_mode_no_login"
 msgstr "Diese Webseite wurde archiviert, ein Login ist nicht mehr möglich."
 
 msgid "Change Password"
@@ -666,7 +666,7 @@ msgid "Reset password link invalid. Please try again."
 msgstr "Passwortwiederherstellungslink ungültig. Bitte erneut versuchen."
 
 msgid "You will receive an e-mail with a reset link."
-msgstr "Du erhälst eine E-Mail mit einem Reset-Link."
+msgstr "Du erhältst eine E-Mail mit einem Reset-Link."
 
 msgid "If you have no configured e-mail address, revisit your ticket activation link"
 msgstr "Falls du keine E-Mail-Adresse konfiguriert hast, klick noch einmal auf deinen Ticket-Aktivierungslink"
@@ -866,10 +866,10 @@ msgstr "Nachricht verschickt"
 msgid "Message deleted."
 msgstr "Nachricht gelöscht"
 
-msgid "Thank you for your help to make this plattform safer and better! Please give us some time to find a solution and keep an eye on your Messages, we may contact you."
-msgstr "Danke für Deine Hilfe diese Plattform besser und sicherer zu machen. Bitte gib uns ein wenig Zeit eine Lösung zu finden und behalte deine Nachrichten hier im Auge, vielleicht kontaktieren wird Dich."
+msgid "Thank you for your help to make this platform safer and better! Please give us some time to find a solution and keep an eye on your Messages, we may contact you."
+msgstr "Danke für Deine Hilfe diese Plattform besser und sicherer zu machen. Bitte gib uns ein wenig Zeit eine Lösung zu finden und behalte deine Nachrichten hier im Auge, vielleicht kontaktieren wird dich."
 
-msgid "RoomView--loginrequired"
+msgid "RoomView--login_required"
 msgstr "Anmeldung erforderlich."
 
 msgid "You need an active Ticket to access this Page!"
@@ -971,7 +971,7 @@ msgstr "nur Kuratierte"
 msgid "assembly only"
 msgstr "nur von Assemblies"
 
-msgid "selforganized only"
+msgid "self_organized only"
 msgstr "nur Self-organized-Sessions"
 
 msgid "recorded only"
diff --git a/src/plainui/locale/en/LC_MESSAGES/django.po b/src/plainui/locale/en/LC_MESSAGES/django.po
index b4633e5c5ea92a7b0ef36bfd8f7265332b52afcc..8aa86f91824b60ee667a722e7a53fdf3663caafa 100644
--- a/src/plainui/locale/en/LC_MESSAGES/django.po
+++ b/src/plainui/locale/en/LC_MESSAGES/django.po
@@ -91,7 +91,7 @@ msgid "Wiki__edit__body"
 msgstr "Page Content"
 
 msgid "Wiki__edit__body_help"
-msgstr "Content shown for the wiki page. You can use Markdown syntax to format the page content. Use the preview button to see the formated page."
+msgstr "Content shown for the wiki page. You can use Markdown syntax to format the page content. Use the preview button to see the formatted page."
 
 msgid "Assemblies"
 msgstr ""
@@ -165,7 +165,7 @@ msgstr "Redeem"
 msgid "badge__manage"
 msgstr "Manage badges"
 
-msgid "archivemode_notavailable"
+msgid "Archive_mode__not_available"
 msgstr "This function is not available any more as this website has been archived."
 
 msgid "all"
@@ -252,7 +252,7 @@ msgstr ""
 msgid "New Entry"
 msgstr ""
 
-msgid "board--paginage--previous"
+msgid "board--paginate--previous"
 msgstr "Previous Page"
 
 msgid "board--paginate--next"
@@ -306,13 +306,13 @@ msgstr ""
 msgid "Save visibility"
 msgstr ""
 
-msgid "index__box-whatshappening__fahrplanlink"
+msgid "index__box-whats_happening__fahrplan_link"
 msgstr "view the schedule"
 
 msgid "No entries available."
 msgstr ""
 
-msgid "No Speakers publicated yet"
+msgid "No Speakers published yet"
 msgstr ""
 
 msgid "Event description"
@@ -382,7 +382,7 @@ msgstr ""
 msgid "Coming Up Next"
 msgstr ""
 
-msgid "no entry availaible"
+msgid "no entry available"
 msgstr ""
 
 msgid "View next Events"
@@ -391,7 +391,7 @@ msgstr ""
 msgid "projects__list__empty"
 msgstr "No projects found"
 
-msgid "roomtype"
+msgid "Room__type"
 msgstr "room type"
 
 msgid "capacity"
@@ -400,7 +400,7 @@ msgstr ""
 msgid "chat"
 msgstr "DMs"
 
-msgid "archivemode_loginlink_hint"
+msgid "archive_mode_login_link_hint"
 msgstr "not available, page has been archived"
 
 msgid "profile"
@@ -467,22 +467,22 @@ msgstr "List"
 msgid "fahrplan.filters.calendar"
 msgstr "Calendar"
 
-msgid "index__box-whatshappening__title"
+msgid "index__box-whats_happening__title"
 msgstr "What's up?"
 
-msgid "index__box-whatshappening__official"
+msgid "index__box-whats_happening__official"
 msgstr "official"
 
-msgid "index__box-whatshappening__selforganized"
+msgid "index__box-whats_happening__self_organized"
 msgstr "self-organized"
 
-msgid "index__box-whatshappening__ended"
+msgid "index__box-whats_happening__ended"
 msgstr "The conference has ended. It was nice having you here."
 
-msgid "index__box-whatshappening__waiting"
+msgid "index__box-whats_happening__waiting"
 msgstr "The conference has not started yet. Currently it is:"
 
-msgid "index__box-whatshappening__day"
+msgid "index__box-whats_happening__day"
 msgstr "day"
 
 msgid "platform"
@@ -506,7 +506,7 @@ msgstr ""
 msgid "Reset Password"
 msgstr "Reset password"
 
-msgid "login--cookieinfo"
+msgid "login--cookie_info"
 msgstr "Note: We use cookies to store your user session."
 
 msgid "New here?"
@@ -515,7 +515,7 @@ msgstr "New here?"
 msgid "sign up (new account)"
 msgstr "Sign up"
 
-msgid "archivemode_nologin"
+msgid "archive_mode_no_login"
 msgstr "This website has been archived, logging in is not possible any more."
 
 msgid "Change Password"
@@ -866,10 +866,10 @@ msgstr ""
 msgid "Message deleted."
 msgstr ""
 
-msgid "Thank you for your help to make this plattform safer and better! Please give us some time to find a solution and keep an eye on your Messages, we may contact you."
+msgid "Thank you for your help to make this platform safer and better! Please give us some time to find a solution and keep an eye on your Messages, we may contact you."
 msgstr ""
 
-msgid "RoomView--loginrequired"
+msgid "RoomView--login_required"
 msgstr "login required"
 
 msgid "You need an active Ticket to access this Page!"
@@ -971,7 +971,7 @@ msgstr ""
 msgid "assembly only"
 msgstr ""
 
-msgid "selforganized only"
+msgid "self_organized only"
 msgstr ""
 
 msgid "recorded only"
diff --git a/src/plainui/static/plainui/img/hub-no-avatar-plattform-active.png b/src/plainui/static/plainui/img/hub-no-avatar-platform-active.png
similarity index 100%
rename from src/plainui/static/plainui/img/hub-no-avatar-plattform-active.png
rename to src/plainui/static/plainui/img/hub-no-avatar-platform-active.png
diff --git a/src/plainui/views/general.py b/src/plainui/views/general.py
index 7d935cb942d4d8f32a020ae60b36dc0276ecc642..bf9e14f23aaaf45b55b8abdbb5bda015cfd68a02 100644
--- a/src/plainui/views/general.py
+++ b/src/plainui/views/general.py
@@ -75,7 +75,7 @@ class IndexView(ConferenceRequiredMixin, TemplateView):
         context['upcoming_events_official'] = (
             Event.objects.conference_accessible(self.conf).order_by('schedule_start').filter(kind=Event.Kind.OFFICIAL).filter(schedule_end__gt=now())[:10]
         )
-        context['upcoming_events_selforganized'] = (
+        context['upcoming_events_self_organized'] = (
             Event.objects.conference_accessible(self.conf).order_by('schedule_start').filter(kind=Event.Kind.SELF_ORGANIZED).filter(schedule_end__gt=now())[:10]
         )
 
diff --git a/src/plainui/views/report.py b/src/plainui/views/report.py
index 9d06aeb6c487d539be5dfeb391b86eb65fee3058..9e2a129629c14fa618b47d7db3a0ce0c6b62c129 100644
--- a/src/plainui/views/report.py
+++ b/src/plainui/views/report.py
@@ -48,7 +48,7 @@ class ReportContentView(ConferenceRequiredMixin, FormView):
         messages.success(
             self.request,
             gettext(
-                'Thank you for your help to make this plattform safer and better! '
+                'Thank you for your help to make this platform safer and better! '
                 'Please give us some time to find a solution and keep an eye on your Messages, we may contact you.'
             ),
         )
diff --git a/src/plainui/views/rooms.py b/src/plainui/views/rooms.py
index 766674d9ef6847dbee05d9195387b865a18cb688..ae1b7ce7155e6b6e01183103d25fb0d183486233 100644
--- a/src/plainui/views/rooms.py
+++ b/src/plainui/views/rooms.py
@@ -40,7 +40,7 @@ class RoomView(ConferenceRequiredMixin, DetailView):
                 if self.request.user.is_authenticated:
                     return HttpResponseRedirect(integrations.BigBlueButton.join_room(self.room, self.request.user, not self.request.user.show_name))
 
-                messages.error(request, gettext('RoomView--loginrequired'))
+                messages.error(request, gettext('RoomView--login_required'))
 
         except integrations.IntegrationError as e:
             messages.error(request, str(e))