2013-04-17 30 views
2

我有一个“资源”文件夹中有两个资源文件的ASP.NET应用程序MVC4,像这样:访问资源字符串(非流动)文化

 
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)?

回答

3

请勿使用资源字符串进行日志记录。

  • 资源字符串可能与代码无关而被更改,从而使日志不易搜索。
  • 如果字符串未在代码中内联,则很难理解将写入日志文件的内容。

但如果你真的需要从其他语言的字符串使用较低级别的API抓住正确的资源set和get字符串:ResourceManager.GetResourceSetResourceSet.GetString

+0

感谢您的回答。我没有使用资源字符串记录操作,只记录用户看到错误消息,以及该消息是什么(除英文而非法语)。我会试一试你的建议。 – Mansfield

+0

没关系,我明白了。我需要为第一个参数指定“true”。非常感谢! – Mansfield

相关问题