2011-07-26 6 views
1

私のDjangoアプリケーションのユーザーは、一連のWebフォームを介して対話し、ログが生成されます。ログは、たとえば、次のようになります。Djangoで多言語の "ログメッセージ"を作成する最も良い方法は何ですか?

  1. バトルが開始されました!
  2. 攻撃者(Elver)がWhirlwindを使用しました。それは超効果的だった!
  3. Defender(Angeleyes)が堀を建てました。防衛+5。
  4. 嵐が勃発しました。攻撃者(Elver)がターンを欠場する。

このログは他の言語でも表示する必要があります。新しい言語が追加された場合、以前のログメッセージも新しい言語で自動的に表示されなければなりません。彼らはなるように、これらを格納するための最良のデータ構造は何

あなたは(などのparamsのないイベント、のparamsのイベント、攻撃イベント、建設イベント、)メッセージの複数の種類がある見ることができるように

簡単なテンプレートに基づいて簡単に翻訳可能?

私の考えはもともと、イベントごとに別々のモデルを構築することでした。フィールドattacker、spell、resultを持つクラスAttackEvent(models.Model)しかし、これらはいくつかのバトルを参照しなければならないので、それらのすべてを照会して並べ替えることは簡単です。彼らはすべて、同じrelated_nameを持つForeignKeyを使って、その戦いに戻りますか?おそらくそうではありません。

もう1つのオプションは、大部分が空白= True、null = Trueの非常識な数のparamsを持つ巨大なGenericLogEventクラスを持つことです。 eventTypeに基づいて切り替えます。

ここで最善の方法は何ですか?

+0

私は大きなdjango開発者ではありませんが、私にとってdjangoメッセージcontribとtemplatetagを使用して、あなたのレンダリングを行うことは素晴らしいかもしれません... jsonデータベースフィールドを使用して、大文字と小文字の区別はありません。 – christophe31

答えて

3

あなたのログメッセージモデルにメッセージとパラメータ(django-picklefieldを見てください)を保存し、translation stuffに組み込まれたDjangoを使用してメッセージを他の言語に翻訳します。

+0

これはかなり良い方法です。ありがとう!私はunpicklingと100以上のログメッセージのレンダリングのパフォーマンスヒットについて心配しています...私は彼らが不変であるので、彼らは簡単にキャッシュすることができると思います。 –

関連する問題