你应该如何处理你用 django-modeltranslation 翻译的原始字段?

What are you supposed to do with the original field that you translate with django-modeltranslation?

我在 settings.py 中指定了模型字段应该可用的语言:

gettext = lambda s: s
LANGUAGES = (
    ('en', gettext('English')),
    ('zh-cn', gettext('Simplified Chinese')),
    ('zh-tw', gettext('Traditional Chinese')),
)

但是当我应用迁移时,这意味着除了原始字段之外,它还会创建这三个额外的字段。如果原来的字段是 "name",我现在将有 "name"、"name_en"、"name_zh_cn" 和 "name_zh_tw"。

原始字段应该做什么?忽略它?删除它? LANGUAGES里是不是就不要放英文了,把原文当成英文翻译?

当我在他们的 Github 页面上寻找解决方案时,有人说您可以将默认设置设置为您想要的语言,而不是将其包含在 TRANSLATIONMODEL_LANGUAGES、https://github.com/deschler/django-modeltranslation/issues/488#issuecomment-457427502 但这不是真的(至少对于最新版本的翻译模型而言),因为它会给你一个 django.core.exceptions.ImproperlyConfigured: MODELTRANSLATION_DEFAULT_LANGUAGE not in LANGUAGES setting. 错误。

您可以通过以下设置实现没有额外的英文字段:

gettext = lambda s: s
LANGUAGES = (
    ('en', gettext('English')),
    ('zh-cn', gettext('Simplified Chinese')),
    ('zh-tw', gettext('Traditional Chinese')),
)
MODELTRANSLATION_LANGUAGES = ('zh-cn', 'zh-tw')

这不一定是最佳做法,因为您应该使用原始值:https://django-modeltranslation.readthedocs.io/en/latest/usage.html#rules