2012-02-23 8 views
1

ここでは、私たちのサイトのすべての静的コンテンツを問題なくグローバル化していますが、今はサイトのユーザーが入力できるデータベースコンテンツになっています。例えば、ユーザは、質問と回答でアンケートを作成することができ、これは以下のようにもグローバル化する必要があり、私はそれと問題をやって考えてきた方法です。グローバル化データベースASP.NET MVC

ソリューション - 例えば、特定の文化のために別々のテーブル、名前欄にSurveyという名前のフィールドがある場合は、その名前フィールドをSurveyCulturesテーブルに移動します。サポートする各カルチャの複数の名前フィールドを調査に追加することができます。これは、SurveyQuestionsテーブルとSurveyAnswersテーブルに対して実行する必要があります。

問題MVC storefront exampleに行われているように見える方法です) - これは、ユーザーが他のユーザーに表示されるテキストを入力することができますすべてのテーブルに1つの余分なテーブルの多くを作成します。また、非常に複雑なフロントエンドを作成して、ユーザーが質問に入力してから、別の文化の質問を入力することもできます。また、文化に関する調査の半分しか翻訳しないと、問題につながります。

私の質問は:これは最善の方法ですか、これは人々が通常それを行う方法ですか、そうでない場合は、通常これが行われる推奨練習ですか?

私は円で回っているので、どんなフィードバックや考えがあれば幸いです。

多くのお礼ありがとうございます

答えて

0

私はこの問題に対処少し経験をしましたが、私はそれに近づくような方法は、既存のテーブルに「言語」欄を追加することです。

Table: Survey 
Columns: Unique identifier, date created, owner, etc. 

Table: SurveyTitle 
Columns: Language, Title, IsReleased (flag indicating whether survey in this language is ready for use), etc. 

Table: SurveyQuestion 
Columns: Language, QuestionNumber, QuestiontText etc. 

Table: Language (this is a lookup table, used for foreign keys on all those Language columns) 
Columns: Language (Id), Description, etc. 

(すべてのものをなど:これは、のようなものになるかもしれませんフィルインされているあなたはそれがあなたの要件に固有である必要があるものは何でものために) あなたが持っているこの方法は:

  • 調査
  • 調査は、オン/オフのフラグと(しているリスト言語のリスト、各言語
  • それは私に最もコントロールを与えたとして、私はこれらの線に沿って、非常に何かを行ってきました
+0

をサポートしているすべての言語のリストにある質問の一覧

  • )まだ書き込まれている/または準備ができて。どうもありがとう。 – user351711

  • 2

    オリジナルのテーブルを貼ってください。テーブルをたくさん追加するのは間違いです。維持し、一般的に間違って悪夢。

    関連する表に、Localeという名前の列(フィールド)を追加します。

    あなたのコードでは、このフィールドをクエリし、テキストのレンダリング方法やルーティング先を決めます。挿入/更新と同じです。

    することはでき、例えば:

    • クエリ与えられた言語であるすべての質問。
    • 特定の質問をすべての言語で入手できます。
    • すべてのデータをテーブルと列の同じ構造で、必要なすべての言語で保存します。

    など

    関連する問題