3

入力時に、言語 ID があります。 出力では、言語の完全なローカライズされた名前が期待されます。

文字列を入力するために使用GetLocaleInfo(..., LOCALE_SLANGUAGE, ... )します。0入力を受け取り、GetLocaleInfoニュートラルな言語を示すのではなく、ユーザーのデフォルト言語で文字列を埋めるまで、すべてが正常に機能しました(予想)。私の知る限り、に等しい特別な LOCALE_XXX_DEFAULT 定数はありません0

テストケースは次のとおりです。

procedure TForm1.FormCreate(Sender: TObject);
var
  wIDLanguage: WORD;
  lpLCData: string;
  cchData: Integer;
begin
  wIDLanguage := 0;
  Assert(wIDLanguage = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));

  cchData := GetLocaleInfo(MAKELCID(wIDLanguage, SORT_DEFAULT), LOCALE_SLANGUAGE, nil, 0);
  Win32Check(cchData <> 0);
  //Win32Check(GetLastError = ERROR_INSUFFICIENT_BUFFER);
  SetLength(lpLCData, cchData);
  Win32Check(GetLocaleInfo(MAKELCID(wIDLanguage, SORT_DEFAULT), LOCALE_SLANGUAGE, PChar(lpLCData), Length(lpLCData)) <> 0);
  SetLength(lpLCData, Length(lpLCData) - 1);

  Caption := '"' + lpLCData + '"';
end;
  • ここで何が間違っていますか?
  • 言語名を正しく取得するには?
4

0 に答える 0