1
我使用標準django.forms.ModelForm
生成了一些表單。如果未填寫必填字段,則會觸發HTML5驗證錯誤(即,請填寫此字段或請將此文本加長至200個字符或更多(您當前使用3個字符)。但驗證文本爲沒有翻譯,我沒有看到它在我的翻譯我已經makemessages
生成的。我怎麼能確保這些驗證錯誤得到適當的翻譯?用Django進行HTML5約束驗證翻譯
感謝,
我使用標準django.forms.ModelForm
生成了一些表單。如果未填寫必填字段,則會觸發HTML5驗證錯誤(即,請填寫此字段或請將此文本加長至200個字符或更多(您當前使用3個字符)。但驗證文本爲沒有翻譯,我沒有看到它在我的翻譯我已經makemessages
生成的。我怎麼能確保這些驗證錯誤得到適當的翻譯?用Django進行HTML5約束驗證翻譯
感謝,
你需要設置輸入屬性字段使用setCustomValidity('Your translation message。')的oninvalid屬性值。
我將在此處發佈示例,以便使用翻譯的字符串進行電子郵件驗證通過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 _
HTML5驗證不通過Django的提高,也不會在你翻譯的消息被發現。如果您的郵件沒有被翻譯,請檢查HTML是否包含語言聲明。 –
感謝您的建議,@DanielRoseman。我通過'<!DOCTYPE html>'在根元素上添加了一個語言聲明,但我仍然看到英文驗證錯誤。還有另一個地方我應該宣佈它嗎? – orange1
好的,所以它看起來像根據這個鏈接https://teamtreehouse.com/community/how-to-set-up-the-language-of-a-form-html5HTML5驗證取決於設置的語言您的操作系統,而不是HTML文檔中的語言聲明。 – orange1