多种语言的MVC3应用程序

时间:2012-04-28 12:02:41

标签: asp.net-mvc-3 localization resources manifest

我认为我需要在ASP.NET MVC3的一般本地化和全球化方面有所指导。我甚至不确定这两者是什么意思,如果真的需要两者。 这就是我现在所拥有的。 MVC3应用程序,一个我保留字符串的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”中,或者所有所需的附属程序集都是可加载和完全签名的。

我想要的是一个应用程序,它将托管在不同语言的不同域上。我会创建多个Resource.resx文件。所以我不需要在一个部署中处理多种语言。我想手动设置每个语言(我猜在web.config中)。 有人可以向我解释一下我错过了什么以及我需要达到什么目标?或者,也许,如果您知道任何好的参考,请指出他们。

谢谢。

1 个答案:

答案 0 :(得分: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文件相同。

就是这样。非常简单。