RegionInfo: DisplayName в переводе CurrentUICulture
Есть ли способ получить RegionInfo, переведенный с помощью пользовательского CultureInfo?
Я попробовал следующее, но это не работает:
/* 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("de"). Если нынешняя культура английская, то это должна быть "Германия".
1 ответ
Решение
Вы не можете использовать RegionInfo для этого - этот класс позволяет вам получить только Имя на языке вашей установки.NET (обычно на английском) или собственное имя (на языке выбранного региона).
Для этого вам следует использовать файлы ресурсов (например, Res.resx: "de" "Germany"; Res.de.resx: "de" "Deutschland"; Res.pl.resx: "de" "Niemcy"...) затем в коде значение Res.de будет взято из resx, соответствующего вашему CurrentThread.CurrentUICulture.