2012-05-18 44 views
8

我本地化我ExportForm成德語(DE)和俄語(RU),你可以看到如下: .NET本地化 - 如何設置語言?

如果我的CultureInfo是德國(奧脫AT),那麼一切都OK,我見格式翻譯成德文:

string specCult = "de-AT"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

但我看到的俄羅斯(RU-RU)的英文UI的CultureInfo

string specCult = "ru-RU"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

雖然如果我用 「儒」,而不是 「RU-RU」,以創建它的作品CultureInfo:

string specCult = "ru"; 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(specCult); 

您能幫我解答一下問題嗎?或者請指出一個方向來調查問題。

+0

嘗試爲'ru-RU'添加一個空的資源文件。找不到的資源應該回到'ru'文件。 – Oded

+0

非常奇怪,但即使我爲ru-RU添加非空資源文件,我也無法通過Thread.CurrentThread.CurrentUICulture = new CultureInfo(「ru-RU」)顯示它 –

+0

我覺得這很奇怪,考慮到你沒有看到「de-AT」這樣的問題(並且它適用於「ru」)。在你的調試器中,你可以在分配新的CultureInfo(「RU-RU」)後檢查Thread.CurrentThread.CurrentUICulture設置爲什麼......我想知道這個問題是否在CultureInfo構造函數中。 – Clafou

回答

0

ru是俄羅斯文化的中性名稱,ru-Ru是俄羅斯特定文化的名稱 。

This is taken from MSDN link

在啓動時,例如將所有系統上的當前區域性和當前UI 文化,俄語(俄羅斯),除了那些在其上 系統默認的文化已經是俄羅斯(俄羅斯)。如果默認系統文化已經是俄羅斯語(俄羅斯),則代碼將當前的文化和當前的用戶界面文化設置爲英語(美國)。

Here is other good explanation

如果特定的文化資源不在 操作系統可用,用於相關聯的區域性的資源使用 。如果中性文化的資源不可用,則使用主組件中嵌入的 資源。

Windows API中的語言環境列表與.NET Framework支持的文化列表 略有不同。如果需要與Windows的互操作性 (例如,通過p/invoke機制, ),則應用程序應使用爲操作系統定義的特定文化。使用特定文化可確保與等效的Windows語言環境 保持一致,該語言環境通過與LCID相同的區域設置 標識符來標識。

+0

你需要閱讀有關回退。這並沒有解決這個問題。 – Oded

2

我已經確定的問題:RU-RU被選定爲我的主要項目集設置一箇中立的語言。

MSDN: NeutralResourcesLanguage屬性通知ResourceManager用於顯示程序集中性文化資源的語言。當它在與中性資源語言相同的文化中查找資源時,ResourceManager會自動使用位於主要程序集中的資源。它是這樣做的,而不是搜索具有當前線程當前用戶界面文化的衛星程序集。這可以提高您加載的第一個資源的查找性能,並可以減少您的工作集。

http://msdn.microsoft.com/en-us/library/bb385967.aspx