在 Django 中进行多语言"log messages"的最佳方式是什么?



在我的Django应用程序中,用户通过一系列web表单进行交互,并生成日志。例如,日志可能看起来像这样:

    战斗开始了!攻击者(精灵)使用旋风。它超级有效!
  1. Defender (Angeleyes)建造了护城河。防御+ 5。
  2. 暴风雨来了。攻击者(Elver)错过一个回合。

问题是这个日志也应该以其他语言显示。如果添加了新语言,以前的日志消息也必须自动以新语言显示。

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

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

我最初的想法是为每个事件建立一个单独的模型。例如,类AttackEvent(models.Model)带有字段attack, spell, result。但是这些必须引用回一些战斗,这样就可以很容易地查询所有这些战斗并对它们进行排序。它们是否都可以使用具有相同related_name的ForeignKey来引用那场战斗?可能不会。

另一个选择是有一个巨大的GenericLogEvent类,它有大量的参数,其中大多数是空白=True, null=True。然后我们根据eventType进行切换。

这里最好的方法是什么?

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

最新更新