如何在 Windows 7 或更高版本中正确获取系统语言
How to correctly get system language in Windows 7 or later
我需要提取用户的 Windows 语言,我正在使用下面的函数。但是我在我当前的机器上测试过(它是 op english),但是函数 return 是 "Portuguese (Brazil)"。
其实我的机器原来是这个语言的,但是在我安装了一个新的语言包之后,它现在是英文的,而不是葡萄牙语;所以我假设下面的功能不能正常工作。还有其他选择吗?
谢谢
function GetWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50);
Result := StrPas(WinLanguage);
end;
您需要 GetUserDefaultLangID。如果您的机器在安装 Windows 时设置为葡萄牙语,那么这是您系统的默认语言。用户当前选择的语言是登录用户选择的语言。 (请参阅链接页面上的备注。)
function GetUsersWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetUserDefaultLangID, 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;
我需要提取用户的 Windows 语言,我正在使用下面的函数。但是我在我当前的机器上测试过(它是 op english),但是函数 return 是 "Portuguese (Brazil)"。
其实我的机器原来是这个语言的,但是在我安装了一个新的语言包之后,它现在是英文的,而不是葡萄牙语;所以我假设下面的功能不能正常工作。还有其他选择吗?
谢谢
function GetWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50);
Result := StrPas(WinLanguage);
end;
您需要 GetUserDefaultLangID。如果您的机器在安装 Windows 时设置为葡萄牙语,那么这是您系统的默认语言。用户当前选择的语言是登录用户选择的语言。 (请参阅链接页面上的备注。)
function GetUsersWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetUserDefaultLangID, 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;