【问题标题】:What are you supposed to do with the original field that you translate with django-modeltranslation?您应该如何处理使用 django-modeltranslation 翻译的原始字段?
【发布时间】:2020-04-16 16:10:27
【问题描述】:

我在 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. 错误。

【问题讨论】:

  • 您不是在翻译 模型字段,是吗?!只是他们在 UI 中的标签。这究竟会在哪里产生像name_en 这样的东西?
  • @deceze 我正在翻译模型字段...我认为这就是 django-modeltranslation 的用途?
  • 抱歉,我完全忽略了django-modeltranslation

标签: python django django-modeltranslation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2018-07-04
    • 2016-04-10
    • 2018-09-24
    • 2020-05-09
    • 2020-08-29
    相关资源
    最近更新 更多