访问特定(非当前)文化的资源字符串

时间:2013-04-17 17:13:00

标签: c# .net asp.net-mvc-4 localization resx

我有一个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的情况下获取特定文化的资源字符串)?

1 个答案:

答案 0 :(得分:4)

不要使用资源字符串进行日志记录。

  • 可以更改资源字符串而不考虑代码,从而使日志不易搜索。
  • 如果代码中的字符串不是内联的,那么很难理解将写入日志文件的内容。

但是如果你真的需要从其他语言中获取字符串,请使用较低级别的API来获取正确的资源集并获取字符串:ResourceManager.GetResourceSet ResourceSet.GetString