Get all system languages

Posted in System info

You should use GetSystemLayoutList function to get identifiers of all system languages and use VerLanguagename function to convert these IDs to locales.

procedure TForm1.Button1Click(Sender: TObject);
var
  Count, i: Integer;
  MyLang: PChar;
  Layouts: array [0..16] of Integer;
const
  Size: Integer = 250;
begin
  GetMem(MyLang, Size);
  Count:=GetKeyboardLayoutList(16, Layouts);
  Memo1.Lines.Clear;
  for i:=0 to Count-1 do
  begin
    VerLanguageName(Layouts[i], MyLang, Size);
    Memo1.Lines.Add(StrPas(MyLang));
  end;
  FreeMem(MyLang);
end;