私は次の状況に直面しています:
- 複数のプロジェクトを持つ複雑な MVC アプリケーション
- 複数の言語を処理できる必要があります (すべての言語が既に定義されているわけではありません)。
- リソース キーは常に利用可能ですが、言語ごとに値が異なります。
- サービス層と Web 層にはリソースが必要です
- リソースは独自のプロジェクトにあります リソースは公開されており、ビルド アクションが埋め込まれたリソースとカスタム ツール PublicResXFileCodeGenerator
ゲームチェンジャー:
- 各言語のリソース テキストは Web フロントエンドで編集可能で、その場で利用できる必要があります
そして、ここに問題があります。フロントエンドでの各リソースの内容の読み取りと表示は問題ありません。
セット CultureInfo に代わってローカライズされたリソース ファイルを読み取ります。
var resourceSet = ResourceFile.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, false);
とにかくリソースファイルを変更することは可能ですか? 別のアプローチは何でしょうか?データベースの方法?
このアプローチを見つけました。ただし、リソース用に別のプロジェクトがあり、複数のプロジェクトでそれらを必要とするため、おそらく私たちの環境では機能しません。
データベースの方法についての私の(単純な)考え:
- すべての ViewModel に必要なすべての文字列は、ViewModelBase >:/ で定義されます。
- コントローラーはビューごとに必要な文字列を取得し、リポジトリからロケールを設定し、それらをビューモデルに設定します
- ビューは ViewModel.Key ごとにリソースにアクセスします
何かご意見は?
ありがとう!