Windows 如何正确地从给定的LANGID查询语言名称字符串?
输入时我有一个语言ID。 在输出时我希望该语言的完整本地化名称 我使用Windows 如何正确地从给定的LANGID查询语言名称字符串?,windows,winapi,locale,nls,Windows,Winapi,Locale,Nls,输入时我有一个语言ID。 在输出时我希望该语言的完整本地化名称 我使用GetLocaleInfo(…,LOCALE\u SLANGUAGE,…)填充字符串。在输入时收到0,并且GetLocaleInfo用用户默认语言填充字符串,而不是指示中性语言(预期)之前,所有操作都很正常。 据我所知,没有任何特殊的区域设置\u XXX\u默认常量等于0 下面是一个测试用例: procedure TForm1.FormCreate(Sender: TObject); var wIDLanguage: WO
GetLocaleInfo(…,LOCALE\u SLANGUAGE,…)
填充字符串。在输入时收到0
,并且GetLocaleInfo
用用户默认语言填充字符串,而不是指示中性语言(预期)之前,所有操作都很正常。
据我所知,没有任何特殊的区域设置\u XXX\u默认常量等于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;
过程TForm1.FormCreate(发送方:TObject);
变量
语言:单词;
lpLCData:字符串;
cchData:整数;
开始
语言:=0;
断言(wIDLanguage=MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL));
cchData:=GetLocaleInfo(MAKELCID(wIDLanguage,SORT\u DEFAULT),LOCALE\u SLANGUAGE,nil,0);
Win32Check(cchdata0);
//Win32检查(GetLastError=ERROR\u缓冲区不足);
设置长度(lpLCData、cchData);
Win32Check(GetLocaleInfo(MAKELCID(wIDLanguage,SORT_DEFAULT),LOCALE_SLANGUAGE,PChar(lpLCData),Length(lpLCData))0;
设置长度(lpLCData),长度(lpLCData)-1;
标题:='“'+lpLCData+'”;
结束;
- 我做错了什么?
- 如何正确检索语言名称?