2014-02-13 51 views
0

可以說,我已經創建了一個Windows窗體應用程序,在C#編寫(或VB),使用Visual Studio(2012年)。如何確保在Visual Studio中完全覆蓋本地化資源文件?

我的應用程序的對象是一個講英語的觀衆,以及在一個講德語。

因此,我創建了兩個資源文件(的.resx)包含我即使用各種MessageBox ES的字符串。例如:MessageBox.Show(rm.GetString("file_not_found"), MessageBoxButtons.OK, MessageBoxIcon.Error);

如何確保字符串資源"file_not_found"包含在我的.resx文件中?我如何確保全面覆蓋?

的Visual Studio不提供在編譯時進行檢查,使確保我的資源字符串都包含在資源文件!

我不希望我的應用程序崩潰時,它無法找到在運行時的資源串...

編輯: 我使用我的訪問資源: internal static ResourceManager rm = new ResourceManager("myNamespace.Resources.lang", System.Reflection.Assembly.GetExecutingAssembly());

而且我必須手動創建了兩個(非自動生成的)資源文件,lang.de_DE.resxlang.en_GB.resx ...

回答

2

我還沒有遇到過這種訪問資源字符串的方式。我總是能夠以強類型的方式訪問資源。例如。假設我有叫Resource1.resx一個資源文件,我添加了一個名爲「FILE_NOT_FOUND」的字符串資源,那麼我可以像這樣訪問: -

MessageBox.Show(Resource1.file_not_found) 
+0

+1。爲RESX自動生成的CS文件是實現編譯時驗證的最簡單方法。如果由於某種原因,相應的Resource1.designer.cs文件不是自動生成的,您可能需要調整解決方案中用於特定resx文件的工具。 –

+0

嗨安德魯,所以不需要像這樣的東西:內部靜態ResourceManager rm =新的ResourceManager(「myNamespace.Resources.lang」,System.Reflection.Assembly.GetExecutingAssembly()); ?? – Sebastian

+0

@Sebastian我只使用過上面的靜態/強類型方法。也許有人更有資格解釋ResourceManager的使用場景? –