在Django中使用多语言“日志消息”的最佳方法是什么?

时间:2011-07-26 08:38:37

标签: django database-design django-models

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

  1. 战斗已经开始了!
  2. 攻击者(Elver)使用旋风。它非常有效!
  3. 后卫(Angeleyes)建造了护城河。防御+5。
  4. 暴风雨爆发了。攻击者(埃尔弗)错过了转弯。
  5. 问题是该日志也应该以其他语言显示。如果添加了新语言,以前的日志消息也必须自动以新语言显示。

    正如您所看到的,有多种类型的消息(没有参数的事件,具有参数的事件,攻击事件,建筑事件等)

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

    我最初的想法是为每个事件建立一个单独的模型。例如,类AttackEvent(models.Model)具有字段攻击者,法术,结果。但是这些必须回顾一些战斗,以便查询所有这些并且对它们进行排序也很容易。他们是否可以使用具有相同related_name的ForeignKey参考该战斗?可能不是。

    另一种选择是拥有一个庞大的GenericLogEvent类,它具有疯狂的参数数量,其中大部分为空白= True,null = True。然后我们根据eventType进行切换。

    这里最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

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