拥有多种语言的最佳方式是什么;“记录消息”;在Django?

拥有多种语言的最佳方式是什么;“记录消息”;在Django?,django,database-design,django-models,Django,Database Design,Django Models,在我的Django应用程序中,用户通过一系列web表单进行交互,并生成日志。例如,日志可能如下所示: 战斗开始了 袭击者(埃尔弗)使用旋风。非常有效 防御者(天使眼)建造了一条护城河。防御+5 暴风雨来了。攻击者(埃尔弗)错过了一个回合 问题是此日志也应该以其他语言显示。如果添加了新语言,以前的日志消息也必须自动以新语言显示 如您所见,有多种类型的消息(不带参数的事件、带参数的事件、攻击事件、构造事件等) 存储这些数据的最佳数据结构是什么,以便它们可以基于简单模板轻松地进行翻译 我最初的想法是为

在我的Django应用程序中,用户通过一系列web表单进行交互,并生成日志。例如,日志可能如下所示:

  • 战斗开始了
  • 袭击者(埃尔弗)使用旋风。非常有效
  • 防御者(天使眼)建造了一条护城河。防御+5
  • 暴风雨来了。攻击者(埃尔弗)错过了一个回合
  • 问题是此日志也应该以其他语言显示。如果添加了新语言,以前的日志消息也必须自动以新语言显示

    如您所见,有多种类型的消息(不带参数的事件、带参数的事件、攻击事件、构造事件等)

    存储这些数据的最佳数据结构是什么,以便它们可以基于简单模板轻松地进行翻译

    我最初的想法是为每个事件建立一个单独的模型。例如,类AttackEvent(models.Model)带有字段攻击者、拼写、结果。但这些都必须回到一些战斗中去,这样就可以很容易地查询所有这些数据并对它们进行排序。他们是否都能用一个同名的外国钥匙回忆起那场战斗?可能不会

    另一种选择是拥有一个庞大的GenericLogEvent类,该类具有数量惊人的参数,其中大多数参数为blank=True,null=True。然后我们根据事件类型进行切换


    这里最好的方法是什么?

    我会将消息和参数(查看一下)存储在日志消息模型中,并使用Django的内置功能将消息翻译成其他语言。

    我不是Django的大开发人员,但对我来说,使用Django message contrib和templatetag来呈现您的消息可能很棒。。。您可能希望使用json数据库字段使所有参数。。。在这种情况下,消息contrib可能不相关。这看起来是一个很好的方法。谢谢虽然我担心取消勾选和呈现100多条日志消息会影响性能。。。我想因为它们是不可变的,所以可以很容易地缓存它们。