Django中的多语言模型和字段

2023-04-11 00:00:00 字段 模型 多语言

Django中多语言模型和字段可以实现在不同语言之间切换,以便适配不同的区域和语言需求。

首先,需要在settings.py中设置语言相关的配置,如下所示:

LANGUAGE_CODE = 'zh-hans'

LANGUAGES = (
    ('en', _('English')),
    ('zh-hans', _('Simplified Chinese')),
    ('zh-hant', _('Traditional Chinese')),
)

LOCALE_PATHS = [
    BASE_DIR / 'locale',
]

接下来,在模型中使用django-modeltranslation插件来实现多语言模型和字段,可以将模型中的某个字段设为多语言字段,如下所示:

from modeltranslation.translator import register, TranslationOptions
from .models import Post

@register(Post)
class PostTranslationOptions(TranslationOptions):
    fields = ('title', 'content',)

以上代码将Post模型的title和content字段变成了多语言字段。在数据库中,这些字段的名称会自动添加语言后缀,如title_en、title_zh-hans等。

使用多语言字段时,需要在模板中使用trans模板标签,如下所示:

{% load i18n %}

<h1>{% trans post.title %}</h1>
<p>{% trans post.content %}</p>

以上代码会根据用户设置的语言切换相应的翻译。如果用户选择了英语,那么会显示Post模型中title_en和content_en字段的值;如果选择了简体中文,就会显示title_zh-hans和content_zh-hans字段的值。

最后,演示一下字符串的使用:

from django.utils.translation import gettext as _

text = _('pidancode.com')  # 翻译为当前语言对应的值

以上代码会将字符串“pidancode.com”翻译为当前语言对应的值(假设当前语言为中文,那么翻译后的值为“皮蛋编程”)。

相关文章