我有一个ASP.NET MVC4应用程序,在“Resources”文件夹中有两个资源文件,如下所示:
Project Resources Resources.fr-CA.resx Resources.resx
我根据用户设置设置了当前的文化,一切正常,这个设置。
但是,我有一个处理错误的类,它们都将它们显示给用户并将它们记录在数据库中。我想要的是使用用户当前的文化显示错误消息,但使用英文消息将其记录在数据库中。
我做了一些研究,发现了一些选项来获取特定文化的资源字符串,但我遇到了问题。
HttpContext.GetLocalResourceString("~/Resources/Resources.resx", "Error_Message", CultureInfo.CreateSpecificCulture("en-US"))
抛出The resource class for this page was not found. Please check if the resource file exists and try again.
我试图弄乱uri无济于事。
HttpContext.GetGlobalResourceString("Resources", "Error_Message", CultureInfo.CreateSpecificCulture("en-US"))
始终返回null。
如何实现这一目标(在不更改Thread.CurrentThread.CurrentCulture
的情况下获取特定文化的资源字符串)?
答案 0 :(得分:4)
不要使用资源字符串进行日志记录。
但是如果你真的需要从其他语言中获取字符串,请使用较低级别的API来获取正确的资源集并获取字符串:ResourceManager.GetResourceSet 和ResourceSet.GetString