Каков наилучший способ иметь многоязычные «сообщения журнала» в Django? - PullRequest
1 голос
/ 26 июля 2011

В моем приложении Django пользователи взаимодействуют через серию веб-форм, и создается журнал. Например, журнал может выглядеть примерно так:

  1. Битва началась!
  2. Атакующий (Эльвер) использовал Вихрь. Это было супер эффективно!
  3. Защитник (Angeleyes) построил ров. Оборона + 5.
  4. Начался шторм. Атакующий (Элвер) пропускает ход.

Проблема в том, что этот журнал должен отображаться и на других языках. А если добавлен новый язык, предыдущие сообщения журнала также должны автоматически отображаться на новом языке.

Как вы можете видеть, существует несколько типов сообщений (событие без параметров, событие с параметрами, событие атаки, событие строительства и т. Д.)

Какова лучшая структура данных для их хранения, чтобы их можно было легко перевести на основе простых шаблонов?

Изначально я думал о том, чтобы построить отдельную модель для каждого события. Например класс AttackEvent (models.Model) с полями атакующий, заклинание, результат. Но они должны были бы вернуться к некоторой битве, чтобы было легко запрашивать их все и сортировать. Могут ли они все вернуться к этой битве, используя ForeignKey с тем же related_name? Вероятно, нет.

Другой вариант - иметь огромный класс GenericLogEvent, имеющий безумное количество параметров, большинство из которых пустые = True, null = True. и затем мы переключаемся на основе eventType.

Какой лучший способ здесь?

1 Ответ

3 голосов
/ 26 июля 2011

Я бы сохранил сообщение и параметры (взгляните на django-picklefield ) в вашей модели сообщений журнала и использовал встроенный в Django переводчик для перевода сообщений в другие языки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...