2009-04-08 4 views
6

2つの異なるアプローチがあるようです。 ASP.NETフレームワークを使用すると、UI文字列をUserProfile.en.resx、UserProfile.fr.resxなどのリソースに入れてページをローカライズする簡単な方法が提供されます。ASP.NET:ローカライズ可能なUIテキストをリソースまたはデータベースに格納する方がいいですか?

他の方法は、すべての文字列をデータベースを作成し、いくつかのカスタムメカニズムを使用して、現在アクティブな言語/カルチャ設定に合わせてそれらを取得します。

私が理解する限り、データベースアプローチはエンタープライズソフトウェアのような大きなプロジェクトではより一般的です。また、データベースへの外部アクセスを翻訳会社に与えることもできるという利点があります。リソースがあれば、それは難しいでしょう。

一方、データベースからすべての静的文字列を取得すると、トラフィックと負荷のオーバーヘッドが増加します。比較的小規模なWebサイトでは、これを行うメリットはありません。 「小」はトラフィックではなく、ページの量と複雑さを意味します。

私の個人的なプロジェクトには個人的にリソースを使用することをお勧めします。これは絶対に悪い考えですか?

ちなみに、ASP.NET MVCでリソースを使用することはできますか?

ご迷惑をおかけして申し訳ございません。

編集:ちょうど1つの答えは、この質問は誰にも興味がないと信じることはできません。誰も彼らの意見を共有したいですか?

答えて

2

私はasp.netリソースファイルに依存するのではなく、データベースにすべての情報を保存することをお勧めします。

私が行ったことは、共通のコントロール(ラベルなど)をサブクラス化し、レンダリングメソッドをオーバーライドすることです。このメソッドは現在のカルチャを検索し、それに応じて適切なキャプションをデータ構造を参照して設定します。

パフォーマンスをデータベースに保存すると、パフォーマンスが向上します。これは私の行います。私のapplication_startイベントでは、具体的な説明をカスタムオブジェクトに追加し、実際にキャッシュします。この方法では、キャッシュが期限切れになるか、期限切れになるまでデータベースを叩く必要はありません。

これまでのところ、この方法でパフォーマンスに問題が発生したことはありませんでした。このすべてを言った - 私はリソースファイルを使用すると、不正なオプションのいずれか

であることを言っていないのですが、私に選択肢を与えられた場合、私は

3

は2を組み合わせる代わりに、リソースファイルのアプローチのデータベースのアプローチを好むだろう注意してください。リソースファイルの代わりにデータベースを使用するカスタムリソースプロバイダを作成することができます。そのため、テキストを自分自身でバインドする必要がありません(つまり、エラーが発生する可能性があります)。ASPを使用するだけです。 NETのローカリゼーション機能MSDNにはwalkthroughがあります。Michelle Leroux Bustamante

+0

http://www.west-wind.com/presentations/wwdbresourceprovider/ articleには、データベースを使用するカスタムリソースプロバイダのソースコードが実装されています。 –

関連する問題