我需要提取用户的Windows语言,我正在使用下面的功能。但是我在我当前的机器上测试过(它是英语),但功能返回是“葡萄牙语(巴西)”。
实际上我的机器最初是用这种语言编写的,但在我安装了一个新的语言包之后它现在用英语而不是葡萄牙语;所以我认为下面的功能不能正常工作。还有另一种选择吗?
谢谢
function GetWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50);
Result := StrPas(WinLanguage);
end;
为了获得当前用户对Windows UI使用的语言的信息,您应该使用GetUserDefaultUILanguage函数而不是GetSystemDefaultLangID
如果当前用户尚未设置任何语言,则返回系统默认UI语言。
对于Delphi 2007,您需要声明该函数,因为它在发布版本时不存在。请注意,此处显示的静态操作意味着您的应用将不再在Windows 2000之前的Windows版本上运行。
function GetUserDefaultUILanguage: LANGID; stdcall; external 'kernel32';
function GetUsersWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetUserDefaultUILanguage, WinLanguage, 50);
Result := WinLanguage;
end;
你想要GetUserDefaultLangID。如果在安装Windows时将机器设置为Portugese,则这是系统的默认语言。用户当前选择的语言是登录用户选择的语言。 (请参阅链接页面上的备注。)
function GetUsersWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetUserDefaultLangID, WinLanguage, 50);
Result := StrPas(WinLanguage);
end;