首页 > 解决方案 > 如何在 django 中翻译枚举字符串?

问题描述

所以我有一个具有状态字段的模型,为此我创建了一个Enum类,如下所示:

class Status(Enum):
    PENDING_APPROVAL = "PENDING-APPROVAL"
    PLANNED = "PLANNED"
    APPROVED = "APPROVED"
    CHANGED_PLAN = "CHANGED-PLAN"
    COMPLETED = "COMPLETED"
    CANCELED = "CANCELED"

然后添加这个类作为模型的选择:

status = models.CharField(
        choices=[(tag.value, tag.name) for tag in Status],
        max_length=20,
        verbose_name=pgettext("Order", "Status"),
        default=Status.PENDING_APPROVAL.value,
    )

一切正常,但问题是,一旦我单击下拉列表从我的Enum班级中选择一个选项,我希望我的选择被翻译成我网站的另一种语言。

我找不到如何将我Enum的课程选择翻译成我需要的语言。

标签: djangopython-3.xtranslation

解决方案


使用标准的 models.TextChoices也可以选择接受翻译:

from django.utils.translation import gettext_lazy as _

class Status(models.TextChoices):
    APPROVED = 'APPROVED', _('Approved')
    CANCELED = 'CANCELED', _('Canceled')

推荐阅读