ASP.NET MVCアプリに.resxローカリゼーションを使用する利点は何ですか?
-
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を使用すると、サイトのグローバリゼーションの管理も非常に簡単になります。