Delphi имеет функцию GetLocaleInfo, которая позволяет получать различную информацию о локальных настройках, таких как системный язык, символ валюты, количество десятичных знаков и т.д.
Далее приведена функция, которая возвращает значение в зависимости от параметра «flag»:
........ 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» может содержать следующее значение (если посмотреть в Windows.pas):
LOCALE_NOUSEROVERRIDE { do not use user overrides } LOCALE_USE_CP_ACP { use the system ACP } LOCALE_ILANGUAGE { language id } LOCALE_SLANGUAGE { localized name of language } LOCALE_SENGLANGUAGE { English name of language LOCALE_SABBREVLANGNAME { abbreviated language name } LOCALE_SNATIVELANGNAME { native name of language } LOCALE_ICOUNTRY { country code } LOCALE_SCOUNTRY { localized name of country } LOCALE_SENGCOUNTRY { English name of country } LOCALE_SABBREVCTRYNAME { abbreviated country name } LOCALE_SNATIVECTRYNAME { native name of country } LOCALE_IDEFAULTLANGUAGE { default language id } LOCALE_IDEFAULTCOUNTRY { default country code } LOCALE_IDEFAULTCODEPAGE { default oem code page } LOCALE_IDEFAULTANSICODEPAGE { default ansi code page } LOCALE_IDEFAULTMACCODEPAGE { default mac code page } LOCALE_SLIST { list item separator } LOCALE_IMEASURE { 0 = metric, 1 = US } LOCALE_SDECIMAL { decimal separator } LOCALE_STHOUSAND { thousand separator } LOCALE_SGROUPING { digit grouping } LOCALE_IDIGITS { number of fractional digits } LOCALE_ILZERO { leading zeros for decimal } LOCALE_INEGNUMBER { negative number mode } LOCALE_SNATIVEDIGITS { native ascii 0-9 } LOCALE_SCURRENCY { local monetary symbol } LOCALE_SINTLSYMBOL { intl monetary symbol } LOCALE_SMONDECIMALSEP { monetary decimal separator } LOCALE_SMONTHOUSANDSEP { monetary thousand separator } 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 { date separator } LOCALE_STIME { time separator } LOCALE_SSHORTDATE { short date format string } LOCALE_SLONGDATE { long date format string } 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 { abbreviated name for Monday } LOCALE_SABBREVDAYNAME2 { abbreviated name for Tuesday } LOCALE_SABBREVDAYNAME3 { abbreviated name for Wednesday } LOCALE_SABBREVDAYNAME4 { abbreviated name for Thursday } LOCALE_SABBREVDAYNAME5 { abbreviated name for Friday } LOCALE_SABBREVDAYNAME6 { abbreviated name for Saturday } LOCALE_SABBREVDAYNAME7 { abbreviated name for Sunday } 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 { abbreviated name for January } LOCALE_SABBREVMONTHNAME2 { abbreviated name for February } LOCALE_SABBREVMONTHNAME3 { abbreviated name for March } LOCALE_SABBREVMONTHNAME4 { abbreviated name for April } LOCALE_SABBREVMONTHNAME5 { abbreviated name for May } LOCALE_SABBREVMONTHNAME6 { abbreviated name for June } LOCALE_SABBREVMONTHNAME7 { abbreviated name for July } LOCALE_SABBREVMONTHNAME8 { abbreviated name for August } LOCALE_SABBREVMONTHNAME9 { abbreviated name for September } LOCALE_SABBREVMONTHNAME10 { abbreviated name for October } LOCALE_SABBREVMONTHNAME11 { abbreviated name for November } LOCALE_SABBREVMONTHNAME12 { abbreviated name for December } LOCALE_SABBREVMONTHNAME13 { abbreviated name for 13th month (if exists) } LOCALE_SPOSITIVESIGN { positive sign } LOCALE_SNEGATIVESIGN { negative sign } LOCALE_IPOSSIGNPOSN { positive sign position } LOCALE_INEGSIGNPOSN { negative sign position } 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 abbreviated language name } LOCALE_SISO3166CTRYNAME { ISO abbreviated country name }