0

私は、人々がコンテンツを作成し、コンテンツにコメントできるようにする Web サイトを構築しています。

フォーム ラベル、ボタン、その他の静的コンテンツなどには、.resxファイルを使用できます。私は以前にそれをやったことがありますが、うまくいきます。

今、私はどちらの道を進むべきか分からない岐路に立たされています。私にはどちらも同じように聞こえますが、これがそのような領域への私の最初の進出になるので、私が考慮していない可能性のある落とし穴について尋ねたいと思います.

実装を考えた 2 つのオプションを次に示します。どちらも、ユーザー生成コンテンツをローカライズしてユーザーに表示するという私の問題を解決してくれます。

オプション A:


MVC3 アプリケーション全体の複数のコピーを作成し、各ローカリゼーションを独自の IIS アプリケーションに配置します。

foobar.com
es.foobar.com
ru.foobar.com

そして、ローカリゼーションごとに異なるデータベースを使用するには、web.config ファイルを変更するだけで済みます。

これにはいくつかの問題があります。たとえば、次のようになります。

  • ユーザーがログインしfoobar.com、ローカライズされたバージョンのサイトにアクセスしたとしても、2 つの完全に別のアプリケーションであるため、ログインすることはできません。

  • 統一されたモデレーション ツールはありません。各アプリケーションにアクセスしてログインし、管理パネルにアクセスして、そこからモデレートする必要がありました。

  • ページのすべてのバージョンに変更/更新をプッシュするのは困難です。各 IIS アプリケーション フォルダに手動で移動し、ローカライズされたバージョンごとに公開されたファイルをコピーする必要がありました。

オプション B:


単一の MVC3 アプリケーションを作成し、バックエンド データベースでローカリゼーションごとに複数のフィールドを作成します。

例えば:

Car
------
CarID
Name
esName
ruName
Make
esMake
ruMake
..and so on..

次に、選択したローカリゼーションに基づいて、表示するフィールドを動的に選択します。サブドメインにアクセスすると、IIS の実際のドメインを指すようにサブドメインをバインドできない限り、まったく別の IIS アプリケーションに移動するため、これが可能かどうかさえわかりません。

foobar.com
es.foobar.com
ru.foobar.com

このアプローチで私が目にする問題は、フィールドの数だけでなく、レコードの数においても、各テーブルのサイズが巨大になることです。これが問題になるかどうかはわかりません。


MVC3 アプリケーションでユーザーが生成したコンテンツのローカリゼーションを実装する方法について、いくつかの提案をいただければ幸いです。

つまり、スペイン語版 ( ) にアクセスしたユーザーには、他のバージョンではなくes.foobar.com、他のスペイン語のコンテンツとユーザーが作成したコメントが表示されます。コンテンツを翻訳してエンド ユーザーに提示するという意味ではありません。

4

3 に答える 3

1

もう 1 つのオプションは、単一の MVC アプリケーションを通常の方法でローカライズし、言語スイッチ (es.foobar.com などの URL ルーティングを介してトリガーでき、言語を「es」に設定するか、accept-languagesヘッダー、または UI セレクターを介して)。

言語ごとに 1 つの列を持つ代わりに、ユーザー生成コンテンツを保持するテーブルに言語 ID 列を追加できます。また、アクティブな言語に一致する行のみを表示するように、ユーザー生成コンテンツにフィルターを実装します。

例えば:

Car
----------
CarID
LanguageID
Name
Make
于 2012-07-02T13:37:18.800 に答える
0

私はあなたがこれを行うことができると思います:

  • 1 つの MVC3 サイト (1 つの IIS サイト) のみを作成します。
  • 通常どおり言語を変更する静的コンテンツには .rsx を使用します
  • ローカリゼーション データベース: 言語ごとに 1 つ。
  • ローカライズ以外のデータベースが必要な場合は、別のデータベースにする必要があります (言語ごとに 1 つではありません)。
  • ユーザーがローカライズされたサイトに入ると、対応する接続​​文字列を使用します

短所:

  • すべてのデータベースでデータベースの更新をトリガーする必要があります
于 2012-07-02T13:59:56.070 に答える
0

1 つの方法は、データ テーブル内のフィールドへのポインターを格納することです。たとえば、 Car テーブルに次を含めることができます

CarId | Name | Make
123   | 0099 | 0100

次に、ローカライズされた文字列を含むテーブルを用意します。

TextId | Lang | String
0099   | en   | "Escape"
0099   | ru   | "Russian Name"
0100   | en   | "Ford"
0100   | ru   | "Russian Ford"

ローカライズされた文字列テーブルで、TextId と Lang に複合主キーを作成します。そうすれば、ドメイン/データ テーブルはシンプルなままで、データを選択するときに、ローカライズされた文字列テーブルを結合できます。わかる?必要に応じて、簡単な SQL クエリを作成してアイデアを提供できます。

このアプローチでは、データベースで追加の作業が必要になりますが、ヒットはそれほど悪くありません。このアプローチは、負荷が中程度の Web サイトで使用しました。問題が発生した場合は、さまざまな言語の具体化されたビューを作成できます。私もこれを行いましたが、ほとんどのクエリが読み取りである限り、非常に高速です。

エリック

于 2012-06-30T22:21:30.620 に答える