diff --git a/pretix_keycloak_create_user/forms.py b/pretix_keycloak_create_user/forms.py
index 1f0261127fa8f39d03dcd59a31dbb97c83268dae..ea59474c6e2e7575213d0cf76086af6911f86345 100644
--- a/pretix_keycloak_create_user/forms.py
+++ b/pretix_keycloak_create_user/forms.py
@@ -1,5 +1,5 @@
 from django.forms import CharField, CheckboxSelectMultiple, MultipleChoiceField
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy
 from i18nfield.forms import I18nFormField, I18nTextInput
 from pretix.base.forms import SettingsForm
 
@@ -7,26 +7,26 @@ from pretix.base.forms import SettingsForm
 class KeycloakCreatorForm(SettingsForm):
     keycloak_create_user_items = MultipleChoiceField(
         widget=CheckboxSelectMultiple(attrs={"class": "scrolling-multiple-choice"}),
-        label=_("Ask Username for"),
+        label=gettext_lazy("Ask Username for"),
         required=True,
         choices=[],
-        help_text=_("These products will ask for a username."),
+        help_text=gettext_lazy("These products will ask for a username."),
     )
     keycloak_create_user_authorization_token = CharField(
-        label=_("Access token"),
+        label=gettext_lazy("Access token"),
         strip=True,
-        help_text=_("Access token for the keycloak server. "),
+        help_text=gettext_lazy("Access token for the keycloak server. "),
     )
     keycloak_create_user_realm_url = CharField(
-        label=_("Keycloak realm url"),
+        label=gettext_lazy("Keycloak realm url"),
         strip=True,
-        help_text=_("The url to keycloak including realm."),
+        help_text=gettext_lazy("The url to keycloak including realm."),
     )
     keycloak_create_user_hint = I18nFormField(
         widget=I18nTextInput,
-        label=_("Username field help text"),
+        label=gettext_lazy("Username field help text"),
         required=True,
-        help_text=_("Explains what to enter"),
+        help_text=gettext_lazy("Explains what to enter"),
     )
 
     def __init__(self, *args, **kwargs):
diff --git a/pretix_keycloak_create_user/signals.py b/pretix_keycloak_create_user/signals.py
index 05833bdd8fae7757aba1aa5dfae9ac861c3bea73..354ba652de1c99f14d9b7edb57e04ce02db8217a 100644
--- a/pretix_keycloak_create_user/signals.py
+++ b/pretix_keycloak_create_user/signals.py
@@ -3,7 +3,7 @@ import requests
 from django import forms
 from django.dispatch import receiver
 from django.urls import resolve, reverse
-from django.utils.translation import gettext_noop, ugettext_lazy as _
+from django.utils.translation import gettext_noop, gettext_lazy
 from i18nfield.strings import LazyI18nString
 from pretix.base.services.orders import OrderError
 from pretix.base.settings import settings_hierarkey
@@ -42,11 +42,11 @@ def add_keycloak_username_question(sender, position, **kwargs):
 
     return {
         "keycloak_create_user_keycloak_username": forms.RegexField(
-            label=_("Username"),
+            label=gettext_lazy("Username"),
             required=False,
             regex="[a-z0-9._=/-]+",
             strip=True,
-            error_messages={"invalid": _("Enter a valid username")},
+            error_messages={"invalid": gettext_lazy("Enter a valid username")},
             help_text=rich_text_snippet(sender.settings.keycloak_create_user_hint),
         )
     }
@@ -83,7 +83,7 @@ def navbar_settings(sender, request=None, **kwargs):
     url = resolve(request.path_info)
     return [
         {
-            "label": _("Create User"),
+            "label": gettext_lazy("Create User"),
             "url": reverse(
                 "plugins:pretix_keycloak_create_user:settings",
                 kwargs={
@@ -135,4 +135,4 @@ def validate_order(sender, positions, **kwargs):
 
         if response.status_code == 200:
             if json.loads(response.text) > 0:
-                raise OrderError(_("Username already taken"))
+                raise OrderError(gettext_lazy("Username already taken"))
diff --git a/pretix_keycloak_create_user/urls.py b/pretix_keycloak_create_user/urls.py
index eaddd20fd3914e04188e3b5e42238eb7d37dd7c0..5e6d20278233a5c55c414cdef28e6b0ea48f0bf8 100644
--- a/pretix_keycloak_create_user/urls.py
+++ b/pretix_keycloak_create_user/urls.py
@@ -1,10 +1,10 @@
-from django.conf.urls import url
+from django.urls import path
 
 from .views import KeycloakCreatorView
 
 urlpatterns = [
-    url(
-        r"^control/event/(?P<organizer>[^/]+)/(?P<event>[^/]+)/keycloak_create_user/$",
+    path(
+        "control/event/<str:organizer>/<str:event>/keycloak_create_user/",
         KeycloakCreatorView.as_view(),
         name="settings",
     )