【问题标题】:Access resource string for specific (non-current) culture访问特定(非当前)区域性的资源字符串
【发布时间】:2013-04-10 13:45:59
【问题描述】:

我有一个 ASP.NET MVC4 应用程序,在“资源”文件夹中有两个资源文件,如下所示:

项目 资源 Resources.fr-CA.resx 资源.resx

我根据用户设置设置了当前文化,此设置一切正常。

但是,我有一个处理错误的类,既向用户显示错误,又将错误记录在数据库中。我想要的是使用用户当前的文化显示错误消息,但使用英文消息将其记录到数据库中。

我做了一些研究,发现了几个选项来获取特定文化的资源字符串,但我遇到了问题。

HttpContext.GetLocalResourceString("~/Resources/Resources.resx", "Error_Message", CultureInfo.CreateSpecificCulture("en-US")) throws 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 的情况下获取特定文化的资源字符串)?

【问题讨论】:

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


    【解决方案1】:

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

    • 资源字符串可能会在与代码无关的情况下更改,从而降低日志的可搜索性。
    • 如果字符串未内联在代码中,则更难理解将写入日志文件的内容。

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

    【讨论】:

    • 感谢您的回答。我没有使用资源字符串记录操作,只记录用户看到错误消息以及该消息是什么(英语而不是法语除外)。我会试试你的建议。
    • 没关系,我明白了。我需要为第一个参数指定true。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2013-05-28
    相关资源
    最近更新 更多