2012-09-12 75 views
1

我有一個場景,我需要共享多個項目類型(網絡前端,WCF,Windows服務等)之間的本地化,所以我的想法是創建一個本地化大會,我可以嵌入我的所有resx文件,然後隨時添加/修改這些我只需要重新部署一個DLL來更新我所有的應用程序。本地化resx文件在單獨的程序集中?

因此,爲了測試我創建了一個類庫項目並將其命名爲TestLocalization。我向它添加了一個名爲LocalizationManager的類,它現在只是一個存根(我打算稍後將一些實用方法放入它中)。然後我在每個文件中添加了兩個resx文件。我命名了一個文件Resource.resx和另一個Resource.fr.resx。我驗證了RESX文件的生成操作設置爲‘嵌入的資源’,然後編譯它,並試圖用下面的代碼來調用它:

Assembly assembly = typeof(TestLocalization.LocalizationManager).Assembly; 
ResourceManager rm = new ResourceManager("Resource", assembly); 
string str = rm.GetString("AKey"); 

它給了我下面的錯誤:

「無法找到適合特定文化或中性文化的任何資源,確保「Resource.resources」在編譯時正確嵌入或鏈接到程序集「TestLocalization」中,或者所有需要的附屬程序集均可加載並完全簽名。

我在這裏做錯了什麼? 謝謝!

回答

0

我不確定最初有什麼問題,但是我可以發誓我測試了程序集+ namespace + resourcename的所有可能的排列組合,但它不起作用,但可能忘記保存或因爲它真的存在就像這樣簡單:

ResourceManager rm = new ResourceManager("TestLocalization.Resource", assembly); 

這就是我的項目名稱爲TestLocalization的地方,我的resx文件都在根目錄中。如果你將它們放在根目錄的子目錄下,你也需要包含它。

,然後如果你想要的語言環境之間進行切換隻是這樣做:

CultureInfo french = new CultureInfo("fr-FR"); 
string translatedVal = rm.GetString("keyname", french); 
+0

你舒爾..你該怎麼做才能避免「內部」類型的資源嗎? –

相關問題