Вопрос: если установлен другой языковой пакет для ОС, то CurrentUICulture какой даст результат? Установленный язык ОС или языкового пакета?
Нет возможности проверить.
Разница в том, что это совершенно разные вещи.
CultureInfo.InstalledUICulture содержит, понятно, системный язык. Он не меняется, очевидно. Его значение получается из вызова GetSystemDefaultUILanguage. Эта функция возвращает системный язык по умолчанию (то есть, язык, на котором система инсталлировалась), но не язык языковых пакетов.
CultureInfo.CurrentUICulture — это текущий язык данного потока. Его можно установить в любое значение в любой момент.* Поэтому он имеет право меняться в течение пробега программы.
Начальное значение CultureInfo.CurrentUICulture равно CultureInfo.DefaultThreadCurrentUICulture (если не null). Если там null, то берётся значение GetUserDefaultUILanguage (не GetSystemDefaultUILanguage!).
Значение, возвращаемое GetUserDefaultUILanguage, равно выбранному языку текущего пользователя системы, если он установлен. Если нет, то текущему предпочитаемому языку системы. А если и его нет, то языку системы по умолчанию (то есть, языку, на котором система инсталлировалась).
Начальное значение CultureInfo.DefaultThreadCurrentUICulture есть null, но вы можете поменять его в любой момент.
*Начиная с .NET 4.6. В более старых версиях фреймворка нужно было идти через Thread.CurrentThread.CurrentUICulture.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости