Django 表单的多语言支持

2023-04-11 00:00:00 支持 表单 多语言

Django 通过使用翻译(translation)应用程序来实现多语言支持,该应用程序使得 Django 可以根据指定的语言环境来自动翻译模板、表单、模型等各种内容,以保证多语言网站的支持。

下面介绍如何在 Django 表单中添加多语言支持。

首先,需要导入 gettext 函数,该函数将编写的字符串转换为指定语言环境的翻译。

from django.utils.translation import gettext as _

其次,在表单类中,需要为需要翻译的字段添加 label 属性,该属性的值为字符串,使用 _() 包裹,例如:

from django import forms
from django.utils.translation import gettext as _

class ContactForm(forms.Form):
    name = forms.CharField(label=_('Name'))
    email = forms.EmailField(label=_('Email'))
    message = forms.CharField(widget=forms.Textarea, label=_('Message'))

这样,表单字段的标签就可以被翻译成用户指定的语言了。

然后,在设置文件中设置语言环境,例如:

LANGUAGE_CODE = 'zh-hans'

LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', 'Simplified Chinese'),
]

最后,需要创建翻译文件,通过命令 django-admin makemessages -l zh-Hans 创建中文翻译文件,并在文件中添加需要翻译的字符串和对应的翻译。

完成上述步骤后,用户在访问网站时,就可以根据自己的语言环境,自动获得对应语言的表单字段标签了。

Code Example:

from django import forms
from django.utils.translation import gettext as _

class ContactForm(forms.Form):
    name = forms.CharField(label=_('Name'))
    email = forms.EmailField(label=_('Email'))
    message = forms.CharField(widget=forms.Textarea, label=_('Message'))

    def send_email(self):
        # 发送电子邮件的代码...
        pass
# settings.py
LANGUAGE_CODE = 'zh-hans'

LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', 'Simplified Chinese'),
]
# myapp/locales/zh_Hans/LC_MESSAGES/django.po
msgid "Name"
msgstr "姓名"

msgid "Email"
msgstr "邮箱"

msgid "Message"
msgstr "留言内容"

相关文章