ASP.NET MVCアプリに.resxローカリゼーションを使用する利点は何ですか?

StackOverflow https://stackoverflow.com/questions/609324

  •  03-07-2019
  •  | 
  •  

質問

このサイトには、に関連するいくつかの質問がありますASP.NET MVCアプリケーションのRESXファイルにアクセスする方法、およびベストプラクティスを使用します。

ただし、(初めて追加する可能性がある)を読んだ後、 MSDNリソースに関する記事私はサーバーコントロールを使用しないので、RESXファイルを使用する利点さえあるのではないかと考えています。 「暗黙的」および「明示的」ローカリゼーションのすべての話がありますが、MVCでそれを利用するつもりはありません。

最終的に、アプリケーションにはボタンやメニュー項目用の文字列リソースが必要になり、また、その他の長いコンテンツには長いHTML項目が必要になります。長いアイテムにCMSを使用したいのは、RESXファイルに貼り付けたくないからです。

新しいアプリケーションでASP.NETリソースを使用するかしないかの説得力のある理由はありますか。今後のMVCの機能強化またはRESXの機能強化は調和して機能するものと想定していますが、現時点では、見た限りでは名誉あるIDictionaryを取得しています。

RESXを続行するか、他の場所を確認する必要がありますか? RESXが設計されている種類のリソースのCMSを検討する必要がありますか?

学んだ教訓は大歓迎です。

役に立ちましたか?

解決

RESXインフラストラクチャにはいくつかの利点があります:

  • 適切な言語ごとのリソースをロードする必要はありません。スレッドのロケールが確立されると、CLrは適切なアセンブリを見つけてリソースをロードします。
  • サードパーティへのローカライズのためにロケール固有のリソースを簡単に引き渡すことができます。
  • ローカライズされていないリソースにはデフォルトのフォールバックメカニズムがあります。

RESXアプローチには1つの特定の欠点もあります:

  • ユーザーがリソースを翻訳する翻訳モデルをサポートするのは困難です。

その最後の点について少し詳しく説明したいと思います。 Facebookの翻訳モデルを例にとります。 Facebookは、人々がさまざまなリソースの翻訳を提供し、投票するためのかなり簡単な方法を備えています。これらがデータベースに保存されている場合、アプリケーションを再構築および再デプロイせずに、適切な編集プロセスの後に使用できます。 RESXモデルでは、リソースアセンブリを再構築および再展開する必要がありますが、展開プロセスによっては十分なコストがかかる可能性があります。

したがって、どのローカライズプロセスを使用するかを決定する前に、誰がローカライズを行うのか、メインアプリケーションが既にデプロイされた後にローカライズされたリソースのデプロイメントプロセスがどうなるのかを検討します。

編集:これらの考慮事項は、ASP.NETフレームワークの選択(MVCまたはWebForms)と直交することを忘れていました。

他のヒント

<!> quot; yes <!> quot;と言いますが、resxファイルは新しいアプリケーションに適したオプションです。特に、ASP.NET MVCが文字列の保存について何かを変えるとは思わない

リソースの使用のすごいところは

  • 管理が非常に簡単です
  • サイトをローカライズすることは、リソースなしよりもはるかに簡単なタスクです(そして、ずっと簡単だと強調しています)
  • リソースはプロバイダーモデルを使用するため、いつでもリソースストアを置き換えることができます。サイトの実装を変更せずに、dbエントリのresxファイルを切り替えることができます。

<!> quot; site strings <!> quot;のリソースファイルをお勧めします。頻繁に編集する可能性のある大きなデータブロックとは異なります。したがって、完全な推奨事項として、ボタン、ラベルなどにリソースファイル(開始するにはresx)を使用し、内容の多いコンテンツにはCMSを使用するとします。

Resxを使用し、MVCのようにサーバーコントロールを使用しない場合、ローカライズされたラベルとテキストを作成できるようにMVCヘルパーメソッドを拡張してみませんか?次に、ヘルパーメソッドでリソースからテキストを呼び出すだけです。

e.g。 '<!> lt;%= Html.CultureLabel(<!> quot; ResouceId <!> quot;)%<!> gt;'

または '<!> lt;%= Html.CultureButton(<!> quot; Name <!> quot;、<!> quot; ResouceId <!> quot ;, HtmlButtonType.Button)%<!> gt;'

ちょっと考えてください。

テキストのresxを使用すると、サイトのグローバリゼーションの管理も非常に簡単になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top