2016-12-05 39 views
1

有沒有辦法讓RegionInfo被自定義CultureInfo翻譯?RegionInfo:DisplayName由CurrentUICulture翻譯

我嘗試以下,但它不工作:

/* Change culture of current thread to german*/ 
CultureInfo de = new CultureInfo("de"); 
Thread.CurrentThread.CurrentCulture = de; 
Thread.CurrentThread.CurrentUICulture = de; 
RegionInfo regionInfoDe = new RegionInfo("de"); 
regionInfoDe.DisplayName.Should().Be("Deutschland"); 

/* Change culture of current thread to englisch */ 
CultureInfo en = new CultureInfo("en"); 
Thread.CurrentThread.CurrentCulture = en; 
Thread.CurrentThread.CurrentUICulture = en; 
RegionInfo regionInfoEn = new RegionInfo("de"); 
regionInfoEn.DisplayName.Should().Be("Germany"); 

如果當前的文化是德國我想從RegionInfo「德國」(「德」)。如果現在的文化是英語,那應該是「德國」。

+0

如果'CultureInfo.CurrentCulture'是「de」和'DisplayName'時,你不能使用'NativeName'? – haim770

+0

我們討論過這個解決方案,但是如果應用語言是英語,應該有「德國」而不是「德國」。 – Tobias

回答

1

您無法使用RegionInfo進行此操作 - 此類允許您僅使用.NET安裝語言(通常是英語)或本地名稱(使用選定區域的語言)獲取名稱。

您應該爲此使用資源文件(例如Res.resx:「de」「Germany」; Res.de.resx:「de」「Deutschland」; Res.pl.resx:「de」「Niemcy」)。 ..),那麼在代碼中,Res.de的值將取自對應於CurrentThread.CurrentUICulture的resx。

+0

這就是我最終的結果。 – Tobias