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.

Другие вопросы по тегам