Const ENGLISH = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH; CHINESE = (SUBLANG_CHINESE_SIMPLIFIED shl 10) or LANG_CHINESE; TCHINESE =(SUBLANG_CHINESE_TRADITIONAL SHL 10) OR LANG_CHINESE; Begin If SysLocale.DefaultLCID=CHINESE then ShowMessage('中文简体') Else If SysLocale.DefaultLCID=TCHINESE then ShowMessage('中文繁体') Else If SysLocale.DefaultLCID=English then ShowMessage('英文版'); End;
比如var
uACP: UINT;
uACP = GetACP(); // api call
case uACP of
begin
936:
iResult = CHINESE_GB; //
break;
950:
iResult = CHINESE_BIG5;
break;
else:
iResult = ENGLISH;
break;
end;
TLocalInfoRecord = record
Title: string;
Value: string;
end; TLocalInfoArray= Array[0..24] of TLocalInfoRecord;procedure GetLocalInfo(out ALocalInfo: TLocalInfoArray);implementation{获取本地一般软件信息}
procedure GetLocalInfo(out ALocalInfo: TLocalInfoArray);
var
BufLen:DWORD;
Buffer:PChar;
begin
// Get Locales
BufLen:=255;
GetMem(Buffer, BufLen);
try
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLANGUAGE, Buffer, BufLen);
ALocalInfo[0].Value := Buffer; ALocalInfo[0].Title := '本地语言'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, BufLen);
ALocalInfo[1].Value := Buffer; ALocalInfo[1].Title := '本地语言的英语名字 (Iso 639)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVLANGNAME, Buffer, BufLen);
ALocalInfo[2].Value := Buffer; ALocalInfo[2].Title := '本地语言的缩写名字 (Iso 639)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICOUNTRY, Buffer, BufLen);
ALocalInfo[3].Value := Buffer; ALocalInfo[3].Title := '国家代码 (IBM code)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCOUNTRY, Buffer, BufLen);
ALocalInfo[4].Value := Buffer; ALocalInfo[4].Title := '国家全代码'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVCTRYNAME, Buffer, BufLen);
ALocalInfo[5].Value := Buffer; ALocalInfo[5].Title := '国家缩略代码 (Iso 3166)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SINTLSYMBOL, Buffer, BufLen);
ALocalInfo[6].Value := Buffer; ALocalInfo[6].Title := '国际货币符号 (Iso 4217)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLIST, Buffer, BufLen);
ALocalInfo[7].Value := Buffer; ALocalInfo[7].Title := '列表分隔符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IMEASURE, Buffer, BufLen);
ALocalInfo[8].Value := Buffer; ALocalInfo[8].Title := '计量系统';
case ALocalInfo[8].Value[1] of
'0' : ALocalInfo[8].Value := '公制';
'1' : ALocalInfo[8].Value := '英制';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, Buffer, BufLen);
ALocalInfo[9].Value := Buffer; ALocalInfo[9].Title := '小数点'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDIGITS, Buffer, BufLen);
ALocalInfo[10].Value := Buffer; ALocalInfo[10].Title := '小数位数'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCURRENCY, Buffer, BufLen);
ALocalInfo[11].Value := Buffer; ALocalInfo[11].Title := '本地货币符号'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONDECIMALSEP, Buffer, BufLen);
ALocalInfo[12].Value := Buffer; ALocalInfo[12].Title := '货币小数点'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHOUSANDSEP, Buffer, BufLen);
ALocalInfo[13].Value := Buffer; ALocalInfo[13].Title := '货币千位分隔符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRDIGITS, Buffer, BufLen);
ALocalInfo[14].Value := Buffer; ALocalInfo[14].Title := '货币小数位数'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRENCY, Buffer, BufLen);
ALocalInfo[15].Value := Buffer; ALocalInfo[15].Title := '正货币模式';
case ALocalInfo[15].Value[1] of
'0': ALocalInfo[15].Value := '前缀, 无分隔符';
'1': ALocalInfo[15].Value := '后缀, 无分隔符';
'2': ALocalInfo[15].Value := '前缀, 1字符的. 作为分隔符';
'3': ALocalInfo[15].Value := '后缀, 1字符的. 作为分隔符';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_INEGCURR, Buffer, BufLen);
ALocalInfo[16].Value := Buffer; ALocalInfo[16].Title := '负货币模式';
case ALocalInfo[16].Value[1] of
'0': ALocalInfo[16].Value := '$1.1)';
'1': ALocalInfo[16].Value := '-$1.1';
'2': ALocalInfo[16].Value := '$-1.1';
'3': ALocalInfo[16].Value := '$1.1-';
'4': ALocalInfo[16].Value := '(1.1$)';
'5': ALocalInfo[16].Value := '-1.1$';
'6': ALocalInfo[16].Value := '1.1-$';
'7': ALocalInfo[16].Value := '1.1$-';
'8': ALocalInfo[16].Value := '-1.1 $ ($前有空格)';
'9': ALocalInfo[16].Value := '-$ 1.1 ($后有空格)';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDATE, Buffer, BufLen);
ALocalInfo[17].Value := Buffer; ALocalInfo[17].Title := '日期分隔符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIME, Buffer, BufLen);
ALocalInfo[18].Value := Buffer; ALocalInfo[18].Title := '时间分隔符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT, Buffer, BufLen);
ALocalInfo[19].Value := Buffer; ALocalInfo[19].Title := '时间格式'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, Buffer, BufLen);
ALocalInfo[20].Value := Buffer; ALocalInfo[20].Title := '短日期格式'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDATE, Buffer, BufLen);
ALocalInfo[21].Value := Buffer; ALocalInfo[21].Title := '短日期顺序';
case ALocalInfo[21].Value[1] of
'0': ALocalInfo[21].Value := '月-日-年';
'1': ALocalInfo[21].Value := '日-月-年';
'2': ALocalInfo[21].Value := '年-月-日';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ILDATE, Buffer, BufLen);
ALocalInfo[22].Value := Buffer; ALocalInfo[22].Title := '长日期顺序';
case ALocalInfo[22].Value[1] of
'0': ALocalInfo[22].Value := '月-日-年';
'1': ALocalInfo[22].Value := '日-月-年';
'2': ALocalInfo[22].Value := '年-月-日';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ITIME, Buffer, BufLen);
ALocalInfo[23].Value := Buffer; ALocalInfo[23].Title := '时间显示格式';
case ALocalInfo[23].Value[1] of
'0': ALocalInfo[23].Value := '上/下午 12小时格式';
'1': ALocalInfo[23].Value := '24小时格式';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICENTURY, Buffer, BufLen);
ALocalInfo[24].Value := Buffer; ALocalInfo[24].Title := '年份格式';
case ALocalInfo[24].Value[1] of
'0': ALocalInfo[24].Value := '缩略的2位年份';
'1': ALocalInfo[24].Value := '完整的4位年份';
end; finally
FreeMem(Buffer);
end; //try
end;
ENGLISH = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH;
CHINESE = (SUBLANG_CHINESE_SIMPLIFIED shl 10) or LANG_CHINESE;
TCHINESE =(SUBLANG_CHINESE_TRADITIONAL SHL 10) OR LANG_CHINESE;
Begin
If SysLocale.DefaultLCID=CHINESE then
ShowMessage('中文简体')
Else
If SysLocale.DefaultLCID=TCHINESE then
ShowMessage('中文繁体')
Else
If SysLocale.DefaultLCID=English then
ShowMessage('英文版');
End;