0

我想我需要一些关于 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 中)。有人可以向我解释我缺少什么以及实现我的目标需要什么吗?或者,也许,如果您知道任何好的参考资料,请指给我看。

谢谢你。

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 回答