Django中的多语言模型和字段
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”翻译为当前语言对应的值(假设当前语言为中文,那么翻译后的值为“皮蛋编程”)。
相关文章