2012-04-12 11 views
0

MVVMとPrismを使用してデスクトップアプリケーションを作成していますが、次の問題があります。ラベルなどと同様に、異なる言語でデータを保存する必要もあります。異なる言語とMVVMを使用するユーザーセッション

たとえば、米国のユーザーは、ネイティブスピーカーであるため、英語またはスペイン語のいずれかを使用してログインできる場合があります。彼らは、製品の詳細に入るときスペイン語を使用してユーザーがログインする場合

  • 商品説明は スペイン語に対して、データベースに保存されます形成します。
  • 英語でログインすると、商品の説明はデータベース に保存され、英語に関連します。現時点で

私の唯一のアイデア以下の通りである: -
- 私が知りたいのですがどのような CurrentLoggedInUserプロパティ

が含まれているグローバルにアクセスApplicationViewModelは、私が現在ログインして節約に取り掛かる方法です特にデスクトップアプリケーションで、MVVMを使用するときにユーザーが選択した言語?
N.B選択した言語は、オペレーティングシステムがどのように他の人がこれを解決し、MVVMを使用したときに別のウィンドウ/ユーザーコントロール間でユーザーの「セッション」を維持して行くん

であることを言語とロケールに異なることができますか?

答えて

1

あなたがする必要があることは、現在の言語をどこかに保存することです(LCID)。

一般的に、これは、ほとんどの言語に依存する状況に対応する、言語固有のリソースファイルをロードするために使用されます。コントロールなどは、すべての文字列をリソースに格納するだけなので、現在の言語に直接アクセスする必要はありません。

データベースストリングをどこに保存するかなど、言語にアクセスする必要がある場合は、静的/シングルトンとして表示するか、望ましくはViewModelsに注入する必要がありますそれが必要。

+0

ローカライズされたリソースを表示する言語としてLCIDが理想的ですが、この質問では、現在ログインしているユーザーのコンテキストをビューモデルに追加する方法についてもっと関心がありました。言語プロパティを使用する必要があるすべてのビューモデルにIUserContextのようなものを注入することでこれを行うことができると示唆していますか?ありがとうアレックス – lostinwpf

+0

それは私の好む方法です。 ViewModelが情報を必要とする場合は、それをどこかから取得する必要があります。はい、あなたは注入が非実用的になると思うなら静的なサービスをすることができますが、注射はユニットテストのようなものを可能にするためにはるかに望ましいです。 – GazTheDestroyer

+0

言い換えれば、ViewModelに言語が必要な場合は、IUserContextとの不必要な結合を防ぐために言語を挿入するだけです。ユーザーコンテキストに他のものが必要な場合は、明らかにコンテキスト全体を注入します。 – GazTheDestroyer

関連する問題