2016-12-05 12 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"); 

Если текущая культура немецкий Я хочу, чтобы получить «Deutschland» от RegionInfo («де»). Если нынешняя культура является англоязычной, она должна быть «Германия».

+0

Не можете ли вы использовать «NativeName», если 'CultureInfo.CurrentCulture' является« de »и« DisplayName », когда он отличается? – haim770

+0

Мы обсудили это решение, но если язык приложений - английский, то должна быть «Германия», а не «Deutschland». – Tobias

ответ

1

Вы не можете использовать RegionInfo для этого - этот класс позволяет вам получить только имя на языке вашей установки .NET (обычно на английском языке) или собственное имя (на языке выбранного региона).

Для этого вам необходимо использовать файлы ресурсов (например, Res.resx: "de" "Germany"; Res.de.resx: "de" "Deutschland"; Res.pl.resx: "de" "Niemcy". ..), то в коде значение Res.de будет взято из resx, соответствующего вашему CurrentThread.CurrentUICulture.

+0

Именно это я и закончил. – Tobias