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