We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Localization of duplicate email account doesn't make sense
I saw this weird thing in post production when I was creating a customer account that was already registered.

![](https://i.imgur.com/DIT6uHC.png)

![](https://i.imgur.com/SXlwkvt.png)

---

Edit: note, the untranslated string is ` User with this Email already exists. `

---

I'm not quite sure how to explain this, it doesn't make sense in other language, but make sense in English. It's understandable for a French or a Polish for example but doesn't make real sense it shouldn't be that way, it looks like a debug string (as a dev).

I will wait to hear back from you. I also know it's not from your side, so I'm not quite sure of what you can do about this.

The error is generated by `django.db.models.base.Model#unique_error_message` (sourcing from `django.forms.models.BaseModelForm#_post_clean`).
```python
    def unique_error_message(self, model_class, unique_check):
        opts = model_class._meta

        params = {
            'model': self,
            'model_class': model_class,
            'model_name': capfirst(opts.verbose_name),
            'unique_check': unique_check,
        }

        # A unique field
        if len(unique_check) == 1:
            field = opts.get_field(unique_check[0])
            params['field_label'] = capfirst(field.verbose_name)
            return ValidationError(
                message=field.error_messages['unique'],
                code='unique',
                params=params,
            )

        # unique_together
        else:
            field_labels = [capfirst(opts.get_field(f).verbose_name) for f in unique_check]
            params['field_labels'] = get_text_list(field_labels, _('and'))
            return ValidationError(
                message=_("%(model_name)s with this %(field_labels)s already exists."),
                code='unique_together',
                params=params,
            )
            # ^^^^^^
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `saleor/account/forms.py`
Content:
```
1 from django import forms
2 from django.conf import settings
3 from django.contrib.auth import forms as django_forms, update_session_auth_hash
4 from django.utils.translation import pgettext, pgettext_lazy
5 from phonenumbers.phonenumberutil import country_code_for_region
6 
7 from ..account.models import User
8 from .i18n import AddressMetaForm, get_address_form_class
9 from . import emails
10 
11 
12 def get_address_form(
13         data, country_code, initial=None, instance=None, **kwargs):
14     country_form = AddressMetaForm(data, initial=initial)
15     preview = False
16     if country_form.is_valid():
17         country_code = country_form.cleaned_data['country']
18         preview = country_form.cleaned_data['preview']
19 
20     if initial is None and country_code:
21         initial = {}
22     if country_code:
23         initial['phone'] = '+{}'.format(country_code_for_region(country_code))
24 
25     address_form_class = get_address_form_class(country_code)
26 
27     if not preview and instance is not None:
28         address_form_class = get_address_form_class(
29             instance.country.code)
30         address_form = address_form_class(
31             data, instance=instance, **kwargs)
32     else:
33         initial_address = (
34             initial if not preview
35             else data.dict() if data is not None else data)
36         address_form = address_form_class(
37             not preview and data or None,
38             initial=initial_address,
39             **kwargs)
40     return address_form, preview
41 
42 
43 class ChangePasswordForm(django_forms.PasswordChangeForm):
44     def __init__(self, *args, **kwargs):
45         super().__init__(*args, **kwargs)
46         self.fields['new_password1'].user = self.user
47         self.fields['old_password'].widget.attrs['placeholder'] = ''
48         self.fields['new_password1'].widget.attrs['placeholder'] = ''
49         del self.fields['new_password2']
50 
51 
52 def logout_on_password_change(request, user):
53     if (update_session_auth_hash is not None and
54             not settings.LOGOUT_ON_PASSWORD_CHANGE):
55         update_session_auth_hash(request, user)
56 
57 
58 class LoginForm(django_forms.AuthenticationForm):
59     username = forms.EmailField(
60         label=pgettext('Form field', 'Email'), max_length=75)
61 
62     def __init__(self, request=None, *args, **kwargs):
63         super().__init__(request=request, *args, **kwargs)
64         if request:
65             email = request.GET.get('email')
66             if email:
67                 self.fields['username'].initial = email
68 
69 
70 class SignupForm(forms.ModelForm):
71     password = forms.CharField(
72         widget=forms.PasswordInput)
73 
74     class Meta:
75         model = User
76         fields = ('email',)
77         labels = {
78             'email': pgettext_lazy(
79                 'Email', 'Email'),
80             'password': pgettext_lazy(
81                 'Password', 'Password')}
82 
83     def __init__(self, *args, **kwargs):
84         super().__init__(*args, **kwargs)
85         if self._meta.model.USERNAME_FIELD in self.fields:
86             self.fields[self._meta.model.USERNAME_FIELD].widget.attrs.update(
87                 {'autofocus': ''})
88 
89     def save(self, request=None, commit=True):
90         user = super().save(commit=False)
91         password = self.cleaned_data['password']
92         user.set_password(password)
93         if commit:
94             user.save()
95         return user
96 
97 
98 class PasswordResetForm(django_forms.PasswordResetForm):
99     """Allow resetting passwords.
100 
101     This subclass overrides sending emails to use templated email.
102     """
103 
104     def get_users(self, email):
105         active_users = User.objects.filter(email__iexact=email, is_active=True)
106         return active_users
107 
108     def send_mail(
109             self, subject_template_name, email_template_name, context,
110             from_email, to_email, html_email_template_name=None):
111         emails.send_password_reset_email.delay(context, to_email)
112
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/saleor/account/forms.py b/saleor/account/forms.py
--- a/saleor/account/forms.py
+++ b/saleor/account/forms.py
@@ -70,6 +70,11 @@
 class SignupForm(forms.ModelForm):
     password = forms.CharField(
         widget=forms.PasswordInput)
+    email = forms.EmailField(
+        error_messages={
+            'unique': pgettext_lazy(
+                'Registration error',
+                'This email has already been registered.')})
 
     class Meta:
         model = User

{"golden_diff": "diff --git a/saleor/account/forms.py b/saleor/account/forms.py\n--- a/saleor/account/forms.py\n+++ b/saleor/account/forms.py\n@@ -70,6 +70,11 @@\n class SignupForm(forms.ModelForm):\n     password = forms.CharField(\n         widget=forms.PasswordInput)\n+    email = forms.EmailField(\n+        error_messages={\n+            'unique': pgettext_lazy(\n+                'Registration error',\n+                'This email has already been registered.')})\n \n     class Meta:\n         model = User\n", "issue": "Localization of duplicate email account doesn't make sense\nI saw this weird thing in post production when I was creating a customer account that was already registered.\r\n\r\n![](https://i.imgur.com/DIT6uHC.png)\r\n\r\n![](https://i.imgur.com/SXlwkvt.png)\r\n\r\n---\r\n\r\nEdit: note, the untranslated string is ` User with this Email already exists. `\r\n\r\n---\r\n\r\nI'm not quite sure how to explain this, it doesn't make sense in other language, but make sense in English. It's understandable for a French or a Polish for example but doesn't make real sense it shouldn't be that way, it looks like a debug string (as a dev).\r\n\r\nI will wait to hear back from you. I also know it's not from your side, so I'm not quite sure of what you can do about this.\r\n\r\nThe error is generated by `django.db.models.base.Model#unique_error_message` (sourcing from `django.forms.models.BaseModelForm#_post_clean`).\r\n```python\r\n    def unique_error_message(self, model_class, unique_check):\r\n        opts = model_class._meta\r\n\r\n        params = {\r\n            'model': self,\r\n            'model_class': model_class,\r\n            'model_name': capfirst(opts.verbose_name),\r\n            'unique_check': unique_check,\r\n        }\r\n\r\n        # A unique field\r\n        if len(unique_check) == 1:\r\n            field = opts.get_field(unique_check[0])\r\n            params['field_label'] = capfirst(field.verbose_name)\r\n            return ValidationError(\r\n                message=field.error_messages['unique'],\r\n                code='unique',\r\n                params=params,\r\n            )\r\n\r\n        # unique_together\r\n        else:\r\n            field_labels = [capfirst(opts.get_field(f).verbose_name) for f in unique_check]\r\n            params['field_labels'] = get_text_list(field_labels, _('and'))\r\n            return ValidationError(\r\n                message=_(\"%(model_name)s with this %(field_labels)s already exists.\"),\r\n                code='unique_together',\r\n                params=params,\r\n            )\r\n            # ^^^^^^\r\n```\n", "before_files": [{"content": "from django import forms\nfrom django.conf import settings\nfrom django.contrib.auth import forms as django_forms, update_session_auth_hash\nfrom django.utils.translation import pgettext, pgettext_lazy\nfrom phonenumbers.phonenumberutil import country_code_for_region\n\nfrom ..account.models import User\nfrom .i18n import AddressMetaForm, get_address_form_class\nfrom . import emails\n\n\ndef get_address_form(\n        data, country_code, initial=None, instance=None, **kwargs):\n    country_form = AddressMetaForm(data, initial=initial)\n    preview = False\n    if country_form.is_valid():\n        country_code = country_form.cleaned_data['country']\n        preview = country_form.cleaned_data['preview']\n\n    if initial is None and country_code:\n        initial = {}\n    if country_code:\n        initial['phone'] = '+{}'.format(country_code_for_region(country_code))\n\n    address_form_class = get_address_form_class(country_code)\n\n    if not preview and instance is not None:\n        address_form_class = get_address_form_class(\n            instance.country.code)\n        address_form = address_form_class(\n            data, instance=instance, **kwargs)\n    else:\n        initial_address = (\n            initial if not preview\n            else data.dict() if data is not None else data)\n        address_form = address_form_class(\n            not preview and data or None,\n            initial=initial_address,\n            **kwargs)\n    return address_form, preview\n\n\nclass ChangePasswordForm(django_forms.PasswordChangeForm):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields['new_password1'].user = self.user\n        self.fields['old_password'].widget.attrs['placeholder'] = ''\n        self.fields['new_password1'].widget.attrs['placeholder'] = ''\n        del self.fields['new_password2']\n\n\ndef logout_on_password_change(request, user):\n    if (update_session_auth_hash is not None and\n            not settings.LOGOUT_ON_PASSWORD_CHANGE):\n        update_session_auth_hash(request, user)\n\n\nclass LoginForm(django_forms.AuthenticationForm):\n    username = forms.EmailField(\n        label=pgettext('Form field', 'Email'), max_length=75)\n\n    def __init__(self, request=None, *args, **kwargs):\n        super().__init__(request=request, *args, **kwargs)\n        if request:\n            email = request.GET.get('email')\n            if email:\n                self.fields['username'].initial = email\n\n\nclass SignupForm(forms.ModelForm):\n    password = forms.CharField(\n        widget=forms.PasswordInput)\n\n    class Meta:\n        model = User\n        fields = ('email',)\n        labels = {\n            'email': pgettext_lazy(\n                'Email', 'Email'),\n            'password': pgettext_lazy(\n                'Password', 'Password')}\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        if self._meta.model.USERNAME_FIELD in self.fields:\n            self.fields[self._meta.model.USERNAME_FIELD].widget.attrs.update(\n                {'autofocus': ''})\n\n    def save(self, request=None, commit=True):\n        user = super().save(commit=False)\n        password = self.cleaned_data['password']\n        user.set_password(password)\n        if commit:\n            user.save()\n        return user\n\n\nclass PasswordResetForm(django_forms.PasswordResetForm):\n    \"\"\"Allow resetting passwords.\n\n    This subclass overrides sending emails to use templated email.\n    \"\"\"\n\n    def get_users(self, email):\n        active_users = User.objects.filter(email__iexact=email, is_active=True)\n        return active_users\n\n    def send_mail(\n            self, subject_template_name, email_template_name, context,\n            from_email, to_email, html_email_template_name=None):\n        emails.send_password_reset_email.delay(context, to_email)\n", "path": "saleor/account/forms.py"}], "after_files": [{"content": "from django import forms\nfrom django.conf import settings\nfrom django.contrib.auth import forms as django_forms, update_session_auth_hash\nfrom django.utils.translation import pgettext, pgettext_lazy\nfrom phonenumbers.phonenumberutil import country_code_for_region\n\nfrom ..account.models import User\nfrom .i18n import AddressMetaForm, get_address_form_class\nfrom . import emails\n\n\ndef get_address_form(\n        data, country_code, initial=None, instance=None, **kwargs):\n    country_form = AddressMetaForm(data, initial=initial)\n    preview = False\n    if country_form.is_valid():\n        country_code = country_form.cleaned_data['country']\n        preview = country_form.cleaned_data['preview']\n\n    if initial is None and country_code:\n        initial = {}\n    if country_code:\n        initial['phone'] = '+{}'.format(country_code_for_region(country_code))\n\n    address_form_class = get_address_form_class(country_code)\n\n    if not preview and instance is not None:\n        address_form_class = get_address_form_class(\n            instance.country.code)\n        address_form = address_form_class(\n            data, instance=instance, **kwargs)\n    else:\n        initial_address = (\n            initial if not preview\n            else data.dict() if data is not None else data)\n        address_form = address_form_class(\n            not preview and data or None,\n            initial=initial_address,\n            **kwargs)\n    return address_form, preview\n\n\nclass ChangePasswordForm(django_forms.PasswordChangeForm):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields['new_password1'].user = self.user\n        self.fields['old_password'].widget.attrs['placeholder'] = ''\n        self.fields['new_password1'].widget.attrs['placeholder'] = ''\n        del self.fields['new_password2']\n\n\ndef logout_on_password_change(request, user):\n    if (update_session_auth_hash is not None and\n            not settings.LOGOUT_ON_PASSWORD_CHANGE):\n        update_session_auth_hash(request, user)\n\n\nclass LoginForm(django_forms.AuthenticationForm):\n    username = forms.EmailField(\n        label=pgettext('Form field', 'Email'), max_length=75)\n\n    def __init__(self, request=None, *args, **kwargs):\n        super().__init__(request=request, *args, **kwargs)\n        if request:\n            email = request.GET.get('email')\n            if email:\n                self.fields['username'].initial = email\n\n\nclass SignupForm(forms.ModelForm):\n    password = forms.CharField(\n        widget=forms.PasswordInput)\n    email = forms.EmailField(\n        error_messages={\n            'unique': pgettext_lazy(\n                'Registration error',\n                'This email has already been registered.')})\n\n    class Meta:\n        model = User\n        fields = ('email',)\n        labels = {\n            'email': pgettext_lazy(\n                'Email', 'Email'),\n            'password': pgettext_lazy(\n                'Password', 'Password')}\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        if self._meta.model.USERNAME_FIELD in self.fields:\n            self.fields[self._meta.model.USERNAME_FIELD].widget.attrs.update(\n                {'autofocus': ''})\n\n    def save(self, request=None, commit=True):\n        user = super().save(commit=False)\n        password = self.cleaned_data['password']\n        user.set_password(password)\n        if commit:\n            user.save()\n        return user\n\n\nclass PasswordResetForm(django_forms.PasswordResetForm):\n    \"\"\"Allow resetting passwords.\n\n    This subclass overrides sending emails to use templated email.\n    \"\"\"\n\n    def get_users(self, email):\n        active_users = User.objects.filter(email__iexact=email, is_active=True)\n        return active_users\n\n    def send_mail(\n            self, subject_template_name, email_template_name, context,\n            from_email, to_email, html_email_template_name=None):\n        emails.send_password_reset_email.delay(context, to_email)\n", "path": "saleor/account/forms.py"}]}