跳转到主要内容

支持django-rest-framework的多语言

项目描述

django-parler-rest

django-rest-framework 添加翻译支持.

Tests PyPI PyPI version License Coverage

此软件包将 django-parler 中的 TranslatableModels 支持添加到 django-rest-framework

安装

pip install django-parler-rest

用法

  • 首先确保你已经安装并配置了 django-parler_。
  • 使用下面的序列化器示例来公开翻译。

首先配置一个模型,按照 django-parler 文档 进行操作

from django.db import models
from django.utils.translation import gettext_lazy as _

from parler.models import TranslatableModel, TranslatedFields


class Country(TranslatableModel):
    """
    Country database model.
    """

    country_code = models.CharField(_("Country code"), unique=True, db_index=True)

    translations = TranslatedFields(
        name = models.CharField(_("Name"), max_length=200)
        url = models.URLField(_("Webpage"), max_length=200, blank=True)
    )

    class Meta:
        verbose_name = _("Country")
        verbose_name_plural = _("Countries")

    def __str__(self):
        return self.name

模型翻译可以作为单独的序列化器公开

from rest_framework import serializers
from parler_rest.serializers import TranslatableModelSerializer, TranslatedFieldsField
from .models import Country  # Example model


class CountrySerializer(TranslatableModelSerializer):
    translations = TranslatedFieldsField(shared_model=Country)

    class Meta:
        model = Country
        fields = ('id', 'country_code', 'translations')

注意: TranslatedFieldsField 只能在继承自 TranslatableModelSerializer 的序列化器中使用。

这将在JSON输出中将字段作为单独的字典暴露出来

{
    "id": 528,
    "country_code": "NL",
    "translations": {
        "nl": {
            "name": "Nederland",
            "url": "http://nl.wikipedia.org/wiki/Nederland"
        },
        "en": {
            "name": "Netherlands",
            "url": "http://en.wikipedia.org/wiki/Netherlands"
        },
        "de": {
            "name": "Niederlande",
            "url": "http://de.wikipedia.org/wiki/Niederlande"
        }
    }
}

贡献

本模块设计为通用。如果您对本模块有任何不满意的地方,或者认为它不够灵活,请告诉我们。我们非常乐意改进它!

如果您有任何其他有价值的贡献、建议或想法,也请告诉我们,因为我们会考虑它。我们也欢迎Pull requests。:-)

运行测试

测试使用 py.test 运行

python setup.py test  # install dependencies and run tests with coverage

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-parler-rest-2.2.tar.gz (11.1 kB 查看哈希值)

上传时间

构建分布

django_parler_rest-2.2-py2.py3-none-any.whl (11.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者