我认为我需要在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中)。 有人可以向我解释一下我错过了什么以及我需要达到什么目标?或者,也许,如果您知道任何好的参考,请指出他们。
谢谢。
答案 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
就是这样。非常简单。