ASP.NET MVC アプリケーションのインターフェイスで複数の言語をサポートする最善の方法は何ですか? リソース ファイルを他のアプリケーションに使用している人を見てきました。これはまだ最善の方法ですか?
6 に答える
デフォルトのビュー エンジンを使用している場合は、ローカル リソースがビューで機能します。ただし、コントローラー アクション内でリソース文字列を取得する必要がある場合は、ローカル リソースを取得できず、グローバル リソースを使用する必要があります。
ローカル リソースは aspx ページに対してローカルであり、コントローラーではビューを選択していないため、これは理にかなっています。
このリソースは非常に役立つことがわかりました
このようなリソースを呼び出すことができるHttpContext.Current.GetGlobalResourceStringとHttpContext.Current.GetLocalResourceStringのラッパーです...
// default global resource
Html.Resource("GlobalResource, ResourceName")
// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")
// default local resource
Html.Resource("ResourceName")
// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")
私が見つけた唯一の問題は、コントローラがローカル リソース文字列にアクセスできないことです。
はい、リソースは、.NET 環境で複数の言語をサポートするための最良の方法です。参照しやすく、新しい言語を追加するのも簡単だからです。
Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...
したがって、リソース ファイルを引き続き使用するのは正しいことです。
Orchard プロジェクトでは、"T" というショートカット メソッドを使用して、すべてのページ内文字列変換を行います。したがって、@T("A String to Translate") を含むタグが表示されます。
これが舞台裏でどのように実装されているかを調べ、将来のプロジェクトで使用する可能性があります。短縮名は頻繁に使用されるため、コードを簡潔に保ちます。
このアプローチで私が気に入っているのは、元の文字列 (この場合は英語) がコード内で簡単に表示され、実際の文字列がここにあるべきものをデコードするためにリソース ツールやその他の場所を検索する必要がないことです。
詳細については、 http://orchardproject.netを参照してください。
回答として言及されている他のソリューションのいくつかは、リリースされたバージョンの MVC では機能しません (以前のバージョンのアルファ/ベータで機能していました)。
これは、強く型付けされ、コントローラーとビューの単体テストを中断しないローカリゼーションを実装する方法を説明する良い記事です: MVC v1 のローカリゼーション ガイド
これは別のオプションであり、コントローラーで CurrentUICulture にアクセスできます。
MVC3多言語をチェック