Как определить расположение и язык отображения с панели управления Windows - PullRequest
7 голосов
/ 17 декабря 2011

enter image description here

Delphi xe.

Для Tab Administrative - Unicode lang
использовать GetSystemDefaultLangID

Для вкладки Formats -
использовать GetUserDefaultLangID

Но что мне использовать для For Tab Location?

Для вкладки «Клавиатура и язык»
для Vista и выше: Getlocaleinfo с ключом LOCALE_CUSTOM_UI_DEFAULT

Function GetLocaleInformation(flag: integer): string;
var
  pclca: array[0..20] of char;
begin
  if (GetLocaleInfo(
      //locale_system_default - Always identical values returns
      LOCALE_CUSTOM_UI_DEFAULT // work only Vista-Win7, not Xp **
      ,flag,pclca,19) <= 0 ) then begin
    pclca[0] := #0;
  end;
  Result := pclca;
end;
  1. Как определить местоположение в Xp + Win7 и язык отображения в Xp?
  2. Может быть универсальным ключом для определения «Язык дисплея» как для Xp, так и для Win7
  3. Как получить список установленных языков интерфейса?

1 Ответ

11 голосов
/ 17 декабря 2011

1.1 - Как получить выбранное географическое положение (географический идентификатор)?

Используйте функцию GetUserGeoID, которая возвращает geographical location, выбранный в настоящее время пользователем.


1.2 - Как получить выбранный язык отображения для многоязычного интерфейса пользователя (MUI) в Windows XP?

Используйте функцию GetUserDefaultUILanguage, которая возвращает language identifier, выбранный в настоящее время пользователем.


2 - Существует ли универсальный способ получения поддержки выбранного языка отображения с Windows XP до Windows 7?

Да, это так. Это просто ранее упомянутая функция GetUserDefaultUILanguage. Есть замечание:

Если язык пользовательского интерфейса является частью пакета языкового интерфейса (LIP) и соответствует дополнительной локали, эта функция возвращает LOCALE_CUSTOM_UI_DEFAULT.

Он поддерживается начиная с Windows 2000 и должен возвращать выбранный язык отображения даже для Windows Vista выше (LOCALE_CUSTOM_UI_DEFAULT).


3 - Как получить список доступных языков интерфейса пользователя?

Используйте функцию EnumUILanguages. В Windows XP он передает language identifiers в функцию обратного вызова EnumUILanguagesProc. Начиная с Windows Vista, вы можете даже указать дополнительные флаги, которые предоставляют для передачи имен языков этой функции обратного вызова, или вы можете указать фильтрацию для лицензированных языков или для языков, разрешенных групповой политикой.

...