Django中的多语言表单输入提示

2023-04-11 00:00:00 输入 表单 多语言

在Django中实现多语言表单输入提示可以使用django-forms-i18n扩展包。

  1. 安装django-forms-i18n:
pip install django-forms-i18n
  1. 修改settings.py文件:

在INSTALLED_APPS中添加‘django.forms.i18n’:

INSTALLED_APPS = [
    ...
    'django.forms.i18n',
]
  1. 创建翻译文件:

在app目录下创建locale/目录:

mkdir locale

进入locale/目录,使用以下命令可生成.po文件:

python ../manage.py makemessages -l zh_CN

生成.po文件后,使用gettext工具进行翻译:

msgfmt -o zh_CN/LC_MESSAGES/django.po zh_CN/LC_MESSAGES/django.po

编辑po文件,将要翻译的字符串用msgid和msgstr进行描述:

msgid "Username"
msgstr "用户名"
  1. 在表单中使用翻译字符串:

在forms.py文件中,使用 gettext_lazy() 方法获取翻译后的字符串:

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

class LoginForm(forms.Form):
    username = forms.CharField(
        max_length=30,
        label=_('Username'),
        help_text=_('pidancode.com'),
        widget=forms.TextInput(attrs={'class': 'form-control'}),
    )
    password = forms.CharField(
        widget=forms.PasswordInput(attrs={'class': 'form-control'}),
    )

5.渲染表单时自动加载翻译:

在模板中使用{{ form.as_p }}渲染表单时,django-forms-i18n会自动加载翻译文件,将翻译后的字符串显示在表单中。

<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Login" class="btn btn-primary">
</form>

以上就是在Django中实现多语言表单输入提示的方法,希望对您有帮助。

相关文章