Django - Пользовательский перевод для автоматически генерируемых сообщений Django

В проекте django, как получить доступ к сообщениям, автоматически генерируемым django?

После внедрения internationalization кажется, что некоторые сообщения не были переведены. В частности, те, которые генерируются в процессе аутентификации.

Среди различных сообщений, к которым я пытаюсь получить доступ, есть и это: The two password fields didn’t match..

Я думал, что смогу:

  1. переопределить существующие UserCreationForm в представлениях
  2. напишите предложение на английском языке, которое я хочу переопределить
  3. .
  4. используйте from django.utils.translation import gettext as _ для захвата его в .po файл.

Это кажется слишком сложным для того, чего я пытаюсь достичь. Есть ли более элегантный способ добиться этого?

forms.py:

class  RegisterForm(UserCreationForm):
    email = forms.EmailField(required=True)
    
    def clean_email(self):
        if User.objects.filter(email=self.cleaned_data['email']).exists():
            raise forms.ValidationError(_("the given email is already registered"))
        return self.cleaned_data['email']

    class Meta:
        model = User
        fields = ["username", "email", "password1", "password2"]

    def __init__(self,*args,**kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)

        #iterate over form fields and set label to false
        for field_name, field in self.fields.items():
            field.label = False

views.py

def register_user_form(request):
    url = request.META.get('HTTP_REFERER')

    if request.method == "POST":
        form = RegisterForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = True
            user.save()
            age_group = form.cleaned_data.get('age_group')
            # check if userprofile with same username already exists
            user_profile, created = UserProfile.objects.get_or_create(
                user=user, defaults={'age_group': age_group})
            if not created:
                user_profile.age_group = age_group
                user_profile.save()

            user = authenticate(username=form.cleaned_data['username'],
                                password=form.cleaned_data['password1'],)
            login(request, user)
            return redirect('index')
        else:
            for error in list(form.errors.values()):
                messages.error(request, error)
            return redirect('index')
    else:
        form = RegisterForm()

    return redirect('template.html', {'form': form})
Вернуться на верх