2011-03-16 73 views
4

我有多個資源文件來支持不同的語言。用戶以他的首選語言呈現資源。正在對應用程序日誌執行其他日誌記錄,我只想使用中性語言(英語)來記錄日誌。如何在不同語言的多個資源文件存在時檢索中性語言資源?

我不想爲僅英文消息提供專用資源文件。以最終用戶的語言顯示的相同消息應該能夠以英文記錄到應用程序日誌文件。

這樣做的最佳方法是什麼?

+0

爲什麼你需要配置日誌?只是硬編碼他們。 – Patrick 2011-03-16 16:17:08

+0

請舉例說明如何寫入日誌 – Patrick 2011-03-16 16:17:53

+0

我不希望將消息硬編碼到應用程序中。由於我已經在資源文件中定義了資源字符串,因此我想使用這些資源字符串,而不是將其他消息硬編碼到代碼中。我使用自定義日誌記錄類。資源字符串表示錯誤消息並具有參數佔位符{0},{1}等,它們在運行時被替換以構造最終的錯誤消息。我希望能夠以英文專門登錄到應用程序日誌。 – Elan 2011-03-16 17:34:37

回答

4

嘗試

string res = Resources.ResourceManager.GetString("...", CultureInfo.InvariantCulture); 
+0

這可行,但我們會失去訪問資源字符串的強類型。如果資源名稱中存在拼寫錯誤,這很容易出錯。 – Elan 2011-03-16 17:30:39

+0

Resource類具有culture屬性。您可以在檢索值之前將其設置爲不變,並在檢索值之後將其恢復。雖然這是一種黑客。另一種方法是爲你的字符串資源文件做你自己的代碼生成。 – Naraen 2011-04-01 22:09:36

+2

@Elan幸運的是,我們現在有'nameof'運算符,所以代碼中沒有更多的硬編碼資源名稱。 'Resources.ResourceManager.GetString(nameof(Resources.MyResouceString),...)' – jirkamat 2017-09-08 09:12:24