70

ASP.NET MVC アプリケーションのインターフェイスで複数の言語をサポートする最善の方法は何ですか? リソース ファイルを他のアプリケーションに使用している人を見てきました。これはまだ最善の方法ですか?

4

6 に答える 6

43

デフォルトのビュー エンジンを使用している場合は、ローカル リソースがビューで機能します。ただし、コントローラー アクション内でリソース文字列を取得する必要がある場合は、ローカル リソースを取得できず、グローバル リソースを使用する必要があります。

ローカル リソースは aspx ページに対してローカルであり、コントローラーではビューを選択していないため、これは理にかなっています。

于 2008-08-07T03:04:04.320 に答える
22

このリソースは非常に役立つことがわかりました

このようなリソースを呼び出すことができるHttpContext.Current.GetGlobalResourceStringHttpContext.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")

私が見つけた唯一の問題は、コントローラがローカル リソース文字列にアクセスできないことです。

于 2008-09-16T00:00:12.580 に答える
3

はい、リソースは、.NET 環境で複数の言語をサポートするための最良の方法です。参照しやすく、新しい言語を追加するのも簡単だからです。

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

したがって、リソース ファイルを引き続き使用するのは正しいことです。

于 2008-08-06T21:48:20.997 に答える
2

Orchard プロジェクトでは、"T" というショートカット メソッドを使用して、すべてのページ内文字列変換を行います。したがって、@T("A String to Translate") を含むタグが表示されます。

これが舞台裏でどのように実装されているかを調べ、将来のプロジェクトで使用する可能性があります。短縮名は頻繁に使用されるため、コードを簡潔に保ちます。

このアプローチで私が気に入っているのは、元の文字列 (この場合は英語) がコード内で簡単に表示され、実際の文字列がここにあるべきものをデコードするためにリソース ツールやその他の場所を検索する必要がないことです。

詳細については、 http://orchardproject.netを参照してください。

于 2011-04-13T18:44:31.770 に答える
1

回答として言及されている他のソリューションのいくつかは、リリースされたバージョンの MVC では機能しません (以前のバージョンのアルファ/ベータで機能していました)。

これは、強く型付けされ、コントローラーとビューの単体テストを中断しないローカリゼーションを実装する方法を説明する良い記事です: MVC v1 のローカリゼーション ガイド

于 2009-10-09T14:24:50.117 に答える
0

これは別のオプションであり、コントローラーで CurrentUICulture にアクセスできます。

MVC3多言語をチェック

于 2012-07-13T22:09:42.117 に答える