我添加了一个需要支持全球化的资源文件。
在Global.asax
我收到了文化信息。
protected void Application_BeginRequest()
{
var cul = Context.Request.Headers["culture"];
if (cul != null && !string.IsNullOrEmpty(cul))
{
var culture = new CultureInfo(cul);
//Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
}
现在我试图以下列方式访问它:
ResourceManager rm = new ResourceManager("Resource", System.Reflection.Assembly.GetExecutingAssembly());
string err = rm.GetString("ERROR_1");
我得到的错误是:
{"Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Resource.resources\" was correctly embedded or linked into assembly \"...\" at compile time, or that all the satellite assemblies required are loadable and fully signed."} System.SystemException {System.Resources.MissingManifestResourceException}
代码和资源具有相同的命名空间。
答案 0 :(得分:0)
我对ResourceManager没有太多经验,但从官方文档中我不认为使用反射来获得程序集。它特别提到第二个参数,程序集应该是默认.resources文件所在的程序集。它后来讨论了设置Thread.CurrentThread.CurrentUICulture
。您可以在msdn上找到所有这些信息:https://msdn.microsoft.com/en-us/library/system.resources.resourcemanager(v=vs.110).aspx
但是,您可能需要查看有关本地化asp.net网页的msdn文档:https://msdn.microsoft.com/en-us/library/ms227427.aspx。它似乎有一些可能对你非常有用的专门机制。