我有一些使用标准django.forms.ModelForm
生成的表单。如果未填写必填字段,则会触发HTML5验证错误(即请填写此字段,或者请将此文本延长至200个字符或更多(您当前使用的是3个字符)。但是,验证文字未翻译,我在makemessages
生成的翻译中没有看到。我怎样才能确保这些验证错误得到适当翻译?
谢谢,
答案 0 :(得分:0)
您需要设置输入字段的属性,以便使用setCustomValidity(“您的翻译消息。”)值来使用无效属性。
我将在此处发布示例,用于通过ugettext_lazy为您的输入字段翻译字符串进行电子邮件验证。
首先在表单中定义电子邮件字段(与此类似):
contact_email = forms.CharField(widget=forms.EmailInput(
attrs={ 'class':'form-control',
'placeholder':_('YOUR_EMAIL'),
'max_length':30,
'oninvalid':_('CUSTOM_VALIDITY'),
'onchange':"setCustomValidity('')",}),
label=_('YOUR_EMAIL_LABEL_TAG'),
help_text=_('YOUR_EMAIL_TAG_HELP'),
required=True)
现在你需要翻译你的字符串,所有翻译都是直接的,除了CUSTOM_VALIDITY,它需要是带有翻译的jQuery。
转到.po文件并找到以下行:
msgid "CUSTOM_VALIDITY"
并将msgstr设置为:
msgstr ""
"if(this.validity.typeMismatch){this.setCustomValidity('Please enter a valid email address!');}"
"else{this.setCustomValidity('Please fill out this field.');}"
将这两条消息翻译成您的语言:
请输入有效的电子邮件地址!
请填写此字段。'
不要忘记在最上面加上这一行:
from django.utils.translation import ugettext_lazy as _