如何自定义和翻译 django 的 PasswordChangeForm 中的错误消息?
How do I customize and translate error messages in django's PasswordChangeForm?
Change password error message shows only in english how to change it or translate it?
/表格/
class PasswordChangingForm(PasswordChangeForm):
old_password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
new_password1 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
new_password2 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
class Meta:
model = CustomUser
fields = ('old_password','new_password1', 'new_password2')
/views.py/
class PasswordChangeView(PasswordChangeView):
form_class = PasswordChangingForm
success_message = 'Амжилттай'
success_url = reverse_lazy('settings_success')
/模板/
<form method="POST">
{% csrf_token %}
{% include '../extends/_messages.html' %}
<div class="form-group row">
<label for="st_pass1" class="col-sm-4 col-form-label">Нууц үг</label>
<div class="col-sm-8">
{{ form.old_password }}
</div>
</div>
<div class="form-group row">
<label for="st_pass2" class="col-sm-4 col-form-label">Шинэ нууц үг</label>
<div class="col-sm-8">
{{ form.new_password1 }}
</div>
</div>
<div class="form-group row">
<label for="st_pass3" class="col-sm-4 col-form-label">Шинэ нууц үг
давтах</label>
<div class="col-sm-8">
{{ form.new_password2 }}
</div>
</div>
{{ form.errors}}
<div class="text-center form-group pt-5" style="width: 100%;">
<button type="submit" class="btn btn-primary cs-btn">Хадгалах</button>
</div>
</form>
(我在 Whosebug 中的第一个问题。如果问题不清楚,请告诉我)
既然你写success_message = 'Everything is fine'
,它当然只会用英文显示。
制作可翻译文本的最简单方法可能是使用 Django's translation API [Django-doc]。您可以通过以下方式使其可翻译:
from django.utils.translation import <b>gettext as _</b>
class PasswordChangeView(PasswordChangeView):
form_class = PasswordChangingForm
success_message = <b>_(</b>'Everything is fine'<b>)</b>
success_url = reverse_lazy('settings_success')
与表格中的标签相同:
class PasswordChangingForm(PasswordChangeForm):
# …
class Meta:
model = CustomUser
fields = ('old_password','new_password1', 'new_password2')
labels = {
'old_password': _('Old password'),
'new_password1': _('New password'),
'new_password2': _('Repeat new password'),
}
Django 已有 'Old password'
[GitHub].
的翻译
对于其他的,您可以通过以下方式进行翻译:
python3 manage.py <b>makemessages</b> -l <i>de</i>
将 de
更改为要为其翻译的 iso 代码。
这将构建 .po
文件,您可以在其中定义给定字符串的翻译。然后你可以使用:
python3 manage.py <b>compilemessages</b>
用翻译构建 .mo
文件。有关详细信息,请参阅 translation section of the documentation.
Change password error message shows only in english how to change it or translate it?
/表格/
class PasswordChangingForm(PasswordChangeForm):
old_password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
new_password1 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
new_password2 = forms.CharField(max_length=100, widget=forms.PasswordInput(attrs={'class': 'form-control', 'type':'password'}))
class Meta:
model = CustomUser
fields = ('old_password','new_password1', 'new_password2')
/views.py/
class PasswordChangeView(PasswordChangeView):
form_class = PasswordChangingForm
success_message = 'Амжилттай'
success_url = reverse_lazy('settings_success')
/模板/
<form method="POST">
{% csrf_token %}
{% include '../extends/_messages.html' %}
<div class="form-group row">
<label for="st_pass1" class="col-sm-4 col-form-label">Нууц үг</label>
<div class="col-sm-8">
{{ form.old_password }}
</div>
</div>
<div class="form-group row">
<label for="st_pass2" class="col-sm-4 col-form-label">Шинэ нууц үг</label>
<div class="col-sm-8">
{{ form.new_password1 }}
</div>
</div>
<div class="form-group row">
<label for="st_pass3" class="col-sm-4 col-form-label">Шинэ нууц үг
давтах</label>
<div class="col-sm-8">
{{ form.new_password2 }}
</div>
</div>
{{ form.errors}}
<div class="text-center form-group pt-5" style="width: 100%;">
<button type="submit" class="btn btn-primary cs-btn">Хадгалах</button>
</div>
</form>
(我在 Whosebug 中的第一个问题。如果问题不清楚,请告诉我)
既然你写success_message = 'Everything is fine'
,它当然只会用英文显示。
制作可翻译文本的最简单方法可能是使用 Django's translation API [Django-doc]。您可以通过以下方式使其可翻译:
from django.utils.translation import <b>gettext as _</b>
class PasswordChangeView(PasswordChangeView):
form_class = PasswordChangingForm
success_message = <b>_(</b>'Everything is fine'<b>)</b>
success_url = reverse_lazy('settings_success')
与表格中的标签相同:
class PasswordChangingForm(PasswordChangeForm):
# …
class Meta:
model = CustomUser
fields = ('old_password','new_password1', 'new_password2')
labels = {
'old_password': _('Old password'),
'new_password1': _('New password'),
'new_password2': _('Repeat new password'),
}
Django 已有 'Old password'
[GitHub].
对于其他的,您可以通过以下方式进行翻译:
python3 manage.py <b>makemessages</b> -l <i>de</i>
将 de
更改为要为其翻译的 iso 代码。
这将构建 .po
文件,您可以在其中定义给定字符串的翻译。然后你可以使用:
python3 manage.py <b>compilemessages</b>
用翻译构建 .mo
文件。有关详细信息,请参阅 translation section of the documentation.