更改密码错误消息仅以英文显示如何更改或翻译?
/表单/
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')
/template/
<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>
(我在Stackoverflow中的第一个问题。如果问题不清楚,请告诉我(
由于您编写了success_message = 'Everything is fine'
,它当然只能用英语显示。
制作可翻译文本的最简单方法可能是使用Django的翻译API[Django-doc]。您可以使用进行翻译
from django.utils.translation importgettext as _
class PasswordChangeView(PasswordChangeView):
form_class = PasswordChangingForm
success_message =_('Everything is fine')
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.pymakemessages-lde
将de
更改为要进行翻译的iso代码。
这将构造.po
文件,您可以在其中定义给定字符串的翻译。然后您可以使用:
python3 manage.pycompilemessages
以构建具有翻译的CCD_ 5文件。有关更多信息,请参阅文档的翻译部分。
我需要添加'_init_'以使标签在Django 4.1:上工作
from django.utils.translation import gettext, gettext_lazy as _
class PasswordChangingForm(PasswordChangeForm):
# …
class Meta:
model = User
fields = ['old_password', 'new_password1', 'new_password2']
labels = {
'old_password': _('Current password'),
'new_password1': _('New password'),
'new_password2': _('Repeat new password'),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for key in self.Meta.labels:
self.fields[key].label = self.Meta.labels[key]