Есть ли способ определить язык ОС из класса С#?
определить язык ОС из С#
Ответы (7)
С классом System.Globalization.CultureInfo
вы можете определить, что вы хотите.
С помощью CultureInfo.CurrentCulture
вы получаете культуру, установленную системой, с помощью CultureInfo.CurrentUICulture
вы получаете культуру, установленную пользователем.
CultureInfo.CurrentCulture
— это культура, которая используется для форматирования дат, чисел и т. д. и инициализируется из языкового стандарта пользователя (региональные настройки). CultureInfo.CurrentUICulture
— это культура, используемая диспетчером ресурсов для поиска строковых ресурсов, и она инициализируется из языка пользовательского интерфейса ОС.
- person Sven; 09.06.2011
К сожалению, предыдущие ответы не на 100% верны.
CurrentCulture
— это информация о культуре работающего потока, и она используется для операций, которым необходимо знать текущую культуру, но ничего не отображать. CurrentUICulture
используется для форматирования отображения, например, правильного отображения DateTime
. Поскольку вы можете изменить текущий поток Culture
или UICulture
, если вы хотите узнать, что на самом деле представляет собой ОС CultureInfo
, используйте CultureInfo.InstalledUICulture
.
Кроме того, есть еще один вопрос по этой теме (более свежий, чем этот) с подробным ответом:
Получить язык операционной системы в c#.
CurrentCulture
используется для форматирования дат, чисел и тому подобного, а CurrentUICulture
используется для поиска ресурсов.
- person Sven; 09.06.2011
"System.Globalization.CultureInfo.CurrentUICulture.DisplayName"
. Это именно то, что вы хотите.
Вы имеете в виду, настроена ли машина (например) на английском, французском или японском языках?
Взгляните на класс CultureInfo, особенно на CurrentCulture, который инициализируется из текущих региональных настроек ОС.
Означает, что если языковой стандарт системы соответствует региону и языку, вы можете использовать функцию Win32 API GetSystemDefaultLCID. Подпись следующая:
[DllImport("kernel32.dll")]
static extern uint GetSystemDefaultLCID();
Функция GetSystemDefaultLCID возвращает LCID. Он может отображать языковую строку из следующей таблицы. Идентификаторы региональных настроек, назначенные Microsoft
Все приведенные выше ответы, похоже, дают вам культуру установки ОС (в лучшем случае). Я столкнулся с проблемой, когда мне нужен был фактический язык отображения, используемый в Windows. то есть пользователь установил установку Windows по умолчанию для en-US, но затем добавил языковой пакет для немецкого (de-DE) и установил его в качестве языка отображения.
Чтобы получить это, я использовал System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage
System.Threading.Thread.CurrentThread.CurrentCulture