0

ASP.NETMVC3での一般的なローカリゼーションとグローバリゼーションに関するガイダンスが必要だと思います。これらの両方が何を意味するのか、本当に両方が必要なのかさえわかりません。これは私が今持っているものです。MVC3アプリケーション、文字列を保持する1つのResources.resxファイル、およびビューでこれらの文字列を使用しており 、コントローラーでこれらの文字列が必要な@MyApplication.Web.Properties.Resources.MyString ため、モデルのデータ注釈で使用しています。[Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "RequiredField")]私はMSDNでリファレンスを見つけ、それらを ResourceManager rm = new ResourceManager("Strings", Assembly.GetExecutingAssembly());ととして使用してみましたrm.GetString("InvalidFormData")。しかし、このように私は得ます: 指定された文化または中立的な文化に適切なリソースを見つけることができませんでした。コンパイル時に「Strings.resources」がアセンブリ「MyApplication.Web」に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください。

私が欲しいのは、さまざまな言語のさまざまなドメインでホストされる1つのアプリケーションです。複数のResource.resxファイルを作成します。したがって、1つのデプロイメントで複数の言語を処理する必要はありません。それぞれの言語を手動で設定したいと思います(web.configで)。誰かが私に何が欠けているのか、そして私の目標を達成するために何が必要なのかを説明してもらえますか?または、おそらく、あなたが良い参考文献を知っているなら、私にそれらを指摘してください。

ありがとうございました。

4

1 に答える 1

0

私は自分がやりたいことをする方法を見つけました。もう一度言いますが、ユーザーのブラウザ文化を気にせずに、アプリケーションの言語を手動で設定したいと思います。アプリケーションがそれぞれの国の異なるドメインでそれぞれの言語でホストされるため、複数の言語に対応する同じコードが必要でした。解決策は次のとおりです。Global.asax

  protected void Application_BeginRequest(object sender, EventArgs e)
  {
    Thread.CurrentThread.CurrentUICulture =
    CultureInfo.CreateSpecificCulture("myCulture");
  }

ビュー内:

@*MyApplication*.Web.Properties.Resources.*MyString*

モデル内:

  [Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "RequiredField")]

コントローラの場合:

*MyApplication*.Web.Properties.Resources.*MyString*

次に、次のResource.resxようなファイルを作成します。

 Resource.myCulture.resx
  • myCultureは、上記のGlobal.asaxファイルと同じです。

それでおしまい。とてもシンプルです。

于 2012-05-01T21:22:05.507 に答える