Delphi 获取系统的语言环境参数GetSystemDefaultLangID、VerLanguageName、GetLocaleInfo

1

核心的两个API函数:GetSystemDefaultLangIDVerLanguageName

GetSystemDefaultLangID:获得系统默认语言的ID

VerLanguageName: 通过语言的ID转换为语言的名称 , 根据16位语言代码获取一种语言的名称

uses Windows;
function GetSystemLanguageName: string;
var
  ID: LangID;
  LanguageName: array[0..255] of Char;
begin
  // 获取当前系统 Locale
  // 对于简体中文,ID = 2052
  ID := GetSystemDefaultLangID;
  // 将 ID 转换为文字
  // 对于简体中文,LanguageName =“中文(中国)”
  VerLanguageName(ID, LanguageName, SizeOf(LanguageName));
  Result := LanguageName;
end;

 

2

还可以通过获得系统本地信息来获取语言环境参数 GetLocaleInfo

Windows API函数GetLocaleInfo 用来获得系统信息,比如系统语言, 货币符号等代码如下:

function TForm1.GetLocaleInformation(Flag: Integer): String;
var
  pcLCA: Array[0..20] of Char;
begin
  if( GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,Flag,pcLCA,19) <= 0 ) then 
  begin    
    pcLCA[0] := #0; 
  end; 
  Result := pcLCA;  
end;
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetLocaleInformation(LOCALE_SENGLANGUAGE)); end;

 

参数"Flag"可以取下列值:

LOCALE_NOUSEROVERRIDE { do not use user overrides } 

LOCALE_USE_CP_ACP { use the system ACP } 

LOCALE_ILANGUAGE { 语言代号 } 

LOCALE_SLANGUAGE { 本地语言名称 } 

LOCALE_SENGLANGUAGE { 语言的英语名 } 

LOCALE_SABBREVLANGNAME { 语言名称缩写 } 简体:CHS 繁体: CHT

LOCALE_SNATIVELANGNAME { 本地语言名称 } 

LOCALE_ICOUNTRY { 国家代号 } 

LOCALE_SCOUNTRY { 国家名 } 

LOCALE_SENGCOUNTRY { 国家的英语名称 } 

LOCALE_SABBREVCTRYNAME { 国家名缩写 } 

LOCALE_SNATIVECTRYNAME { 国家名 } 

LOCALE_IDEFAULTLANGUAGE { 缺省语言代号 } 

LOCALE_IDEFAULTCOUNTRY { 缺省国家代码 } 

LOCALE_IDEFAULTCODEPAGE { 缺省oem代码页 } 

LOCALE_IDEFAULTANSICODEPAGE { 缺省ansi代码页 } 

LOCALE_IDEFAULTMACCODEPAGE { 缺省mac页 } 

LOCALE_SLIST { 列表项分割符 } 

LOCALE_IMEASURE { 测量单位0 = 米制, 1 = 英制 } 

LOCALE_SDECIMAL { 小数点符号 } 

LOCALE_STHOUSAND { 千位分割符 } 

LOCALE_SGROUPING { digit grouping } 

LOCALE_IDIGITS { number of fractional digits } 

LOCALE_ILZERO { leading zeros for decimal } 

LOCALE_INEGNUMBER { 负数模式 } 

LOCALE_SNATIVEDIGITS { native ascii 0-9 } 

LOCALE_SCURRENCY { 本地货币符号 } 

LOCALE_SINTLSYMBOL { 国际货币符号 } 

LOCALE_SMONDECIMALSEP { 货币小数点分割符 } 

LOCALE_SMONTHOUSANDSEP { 货币千位分割符 } 

LOCALE_SMONGROUPING { monetary grouping } 

LOCALE_ICURRDIGITS { # local monetary digits } 

LOCALE_IINTLCURRDIGITS { # intl monetary digits } 

LOCALE_ICURRENCY { positive currency mode } 

LOCALE_INEGCURR { negative currency mode } 

LOCALE_SDATE { 日期分割符 } 

LOCALE_STIME { 时间分割符 } 

LOCALE_SSHORTDATE { 短日期字符串 } 

LOCALE_SLONGDATE { 长日期字符串 } 

LOCALE_STIMEFORMAT { time format string } 

LOCALE_IDATE { short date format ordering } 

LOCALE_ILDATE { long date format ordering } 

LOCALE_ITIME { time format specifier } 

LOCALE_ITIMEMARKPOSN { time marker position } 

LOCALE_ICENTURY { century format specifier (short date) } 

LOCALE_ITLZERO { leading zeros in time field } 

LOCALE_IDAYLZERO { leading zeros in day field (short date) } 

LOCALE_IMONLZERO { leading zeros in month field (short date) } 

LOCALE_S1159 { AM designator } 

LOCALE_S2359 { PM designator } 

LOCALE_ICALENDARTYPE { type of calendar specifier } 

LOCALE_IOPTIONALCALENDAR { additional calendar types specifier } 

LOCALE_IFIRSTDAYOFWEEK { first day of week specifier } 

LOCALE_IFIRSTWEEKOFYEAR { first week of year specifier } 

LOCALE_SDAYNAME1 { long name for Monday } 

LOCALE_SDAYNAME2 { long name for Tuesday } 

LOCALE_SDAYNAME3 { long name for Wednesday } 

LOCALE_SDAYNAME4 { long name for Thursday } 

LOCALE_SDAYNAME5 { long name for Friday } 

LOCALE_SDAYNAME6 { long name for Saturday } 

LOCALE_SDAYNAME7 { long name for Sunday } 

LOCALE_SABBREVDAYNAME1 { 星期一的缩写 } 

LOCALE_SABBREVDAYNAME2 { 星期二的缩写 } 

LOCALE_SABBREVDAYNAME3 { 星期三的缩写 } 

LOCALE_SABBREVDAYNAME4 { 星期四的缩写 } 

LOCALE_SABBREVDAYNAME5 { 星期五的缩写 } 

LOCALE_SABBREVDAYNAME6 { 星期六的缩写 } 

LOCALE_SABBREVDAYNAME7 { 星期天的缩写 } 

LOCALE_SMONTHNAME1 { long name for January } 

LOCALE_SMONTHNAME2 { long name for February } 

LOCALE_SMONTHNAME3 { long name for March } 

LOCALE_SMONTHNAME4 { long name for April } 

LOCALE_SMONTHNAME5 { long name for May } 

LOCALE_SMONTHNAME6 { long name for June } 

LOCALE_SMONTHNAME7 { long name for July } 

LOCALE_SMONTHNAME8 { long name for August } 

LOCALE_SMONTHNAME9 { long name for September } 

LOCALE_SMONTHNAME10 { long name for October } 

LOCALE_SMONTHNAME11 { long name for November } 

LOCALE_SMONTHNAME12 { long name for December } 

LOCALE_SMONTHNAME13 { long name for 13th month (if exists) } 

LOCALE_SABBREVMONTHNAME1 { 一月的缩写 } 

LOCALE_SABBREVMONTHNAME2 { 二月的缩写 } 

LOCALE_SABBREVMONTHNAME3 { 三月的缩写 } 

LOCALE_SABBREVMONTHNAME4 { 四月的缩写 } 

LOCALE_SABBREVMONTHNAME5 { 五月的缩写 } 

LOCALE_SABBREVMONTHNAME6 { 六月的缩写 } 

LOCALE_SABBREVMONTHNAME7 { 七月的缩写 } 

LOCALE_SABBREVMONTHNAME8 { 八月的缩写 } 

LOCALE_SABBREVMONTHNAME9 { 九月的缩写 } 

LOCALE_SABBREVMONTHNAME10 { 十月的缩写 } 

LOCALE_SABBREVMONTHNAME11 { 十一月的缩写 } 

LOCALE_SABBREVMONTHNAME12 { 十二月的缩写 } 

LOCALE_SABBREVMONTHNAME13 { 十三月的缩写(如果有的话) } 

LOCALE_SPOSITIVESIGN { 正号 } 

LOCALE_SNEGATIVESIGN { 负号 } 

LOCALE_IPOSSIGNPOSN { 正号位置 } 

LOCALE_INEGSIGNPOSN { 负号位置 } 

LOCALE_IPOSSYMPRECEDES { mon sym precedes pos amt } 

LOCALE_IPOSSEPBYSPACE { mon sym sep by space from pos amt } 

LOCALE_INEGSYMPRECEDES { mon sym precedes neg amt } 

LOCALE_INEGSEPBYSPACE { mon sym sep by space from neg amt } 

LOCALE_FONTSIGNATURE { font signature } 

LOCALE_SISO639LANGNAME { ISO 缩写语言名称 } 

LOCALE_SISO3166CTRYNAME { ISO 缩写国家名称 }

 

来源:https://www.cnblogs.com/guorongtao/p/11969774.html

最新修改时间于 2019.12.02

 

posted on 2019-12-02 12:00  滔Roy  阅读(1081)  评论(0编辑  收藏  举报

导航