2013-04-17 96 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

相關問題