Is there any possibility to detect on program start what
language is used on the running OS? (API...)
Printable View
Is there any possibility to detect on program start what
language is used on the running OS? (API...)
You can get all kinds of stuff from the regional settings. Here is an example. Play with it....VB Code:
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean Private Declare Function GetUserDefaultLCID% Lib "kernel32" () Private Const LOCALE_ICENTURY = &H24 Private Const LOCALE_ICOUNTRY = &H5 Private Const LOCALE_ICURRDIGITS = &H19 Private Const LOCALE_ICURRENCY = &H1B Private Const LOCALE_IDATE = &H21 Private Const LOCALE_IDAYLZERO = &H26 Private Const LOCALE_IDEFAULTCODEPAGE = &HB Private Const LOCALE_IDEFAULTCOUNTRY = &HA Private Const LOCALE_IDEFAULTLANGUAGE = &H9 Private Const LOCALE_IDIGITS = &H11 Private Const LOCALE_IINTLCURRDIGITS = &H1A Private Const LOCALE_ILANGUAGE = &H1 Private Const LOCALE_ILDATE = &H22 Private Const LOCALE_ILZERO = &H12 Private Const LOCALE_IMEASURE = &HD Private Const LOCALE_IMONLZERO = &H27 Private Const LOCALE_INEGCURR = &H1C Private Const LOCALE_INEGSEPBYSPACE = &H57 Private Const LOCALE_INEGSIGNPOSN = &H53 Private Const LOCALE_INEGSYMPRECEDES = &H56 Private Const LOCALE_IPOSSEPBYSPACE = &H55 Private Const LOCALE_IPOSSIGNPOSN = &H52 Private Const LOCALE_IPOSSYMPRECEDES = &H54 Private Const LOCALE_ITIME = &H23 Private Const LOCALE_ITLZERO = &H25 Private Const LOCALE_NOUSEROVERRIDE = &H80000000 Private Const LOCALE_S1159 = &H28 Private Const LOCALE_S2359 = &H29 Private Const LOCALE_SABBREVCTRYNAME = &H7 Private Const LOCALE_SABBREVDAYNAME1 = &H31 Private Const LOCALE_SABBREVDAYNAME2 = &H32 Private Const LOCALE_SABBREVDAYNAME3 = &H33 Private Const LOCALE_SABBREVDAYNAME4 = &H34 Private Const LOCALE_SABBREVDAYNAME5 = &H35 Private Const LOCALE_SABBREVDAYNAME6 = &H36 Private Const LOCALE_SABBREVDAYNAME7 = &H37 Private Const LOCALE_SABBREVLANGNAME = &H3 Private Const LOCALE_SABBREVMONTHNAME1 = &H44 Private Const LOCALE_SCOUNTRY = &H6 Private Const LOCALE_SCURRENCY = &H14 Private Const LOCALE_SDATE = &H1D Private Const LOCALE_SDAYNAME1 = &H2A Private Const LOCALE_SDAYNAME2 = &H2B Private Const LOCALE_SDAYNAME3 = &H2C Private Const LOCALE_SDAYNAME4 = &H2D Private Const LOCALE_SDAYNAME5 = &H2E Private Const LOCALE_SDAYNAME6 = &H2F Private Const LOCALE_SDAYNAME7 = &H30 Private Const LOCALE_SDECIMAL = &HE Private Const LOCALE_SENGCOUNTRY = &H1002 Private Const LOCALE_SENGLANGUAGE = &H1001 Private Const LOCALE_SGROUPING = &H10 Private Const LOCALE_SINTLSYMBOL = &H15 Private Const LOCALE_SLANGUAGE = &H2 Private Const LOCALE_SLIST = &HC Private Const LOCALE_SLONGDATE = &H20 Private Const LOCALE_SMONDECIMALSEP = &H16 Private Const LOCALE_SMONGROUPING = &H18 Private Const LOCALE_SMONTHNAME1 = &H38 Private Const LOCALE_SMONTHNAME10 = &H41 Private Const LOCALE_SMONTHNAME11 = &H42 Private Const LOCALE_SMONTHNAME12 = &H43 Private Const LOCALE_SMONTHNAME2 = &H39 Private Const LOCALE_SMONTHNAME3 = &H3A Private Const LOCALE_SMONTHNAME4 = &H3B Private Const LOCALE_SMONTHNAME5 = &H3C Private Const LOCALE_SMONTHNAME6 = &H3D Private Const LOCALE_SMONTHNAME7 = &H3E Private Const LOCALE_SMONTHNAME8 = &H3F Private Const LOCALE_SMONTHNAME9 = &H40 Private Const LOCALE_SMONTHOUSANDSEP = &H17 Private Const LOCALE_SNATIVECTRYNAME = &H8 Private Const LOCALE_SNATIVEDIGITS = &H13 Private Const LOCALE_SNATIVELANGNAME = &H4 Private Const LOCALE_SNEGATIVESIGN = &H51 Private Const LOCALE_SPOSITIVESIGN = &H50 Private Const LOCALE_SSHORTDATE = &H1F Private Const LOCALE_STHOUSAND = &HF Private Const LOCALE_STIME = &H1E Private Const LOCALE_STIMEFORMAT = &H1003 Private Sub GetRegionalSettings() ' Retrieve the regional setting Dim Symbol As String Dim iRet1 As Long Dim iRet2 As Long Dim lpLCDataVar As String Dim Pos As Integer Dim Locale As Long Locale = GetUserDefaultLCID() 'LOCALE_SDATE is the constant for the date separator 'as stated in declarations 'for any other locale setting just change the constant 'Function can also be re-written to take the 'locale symbol being requested as a parameter iRet1 = GetLocaleInfo(Locale, LOCALE_SDATE, _ lpLCDataVar, 0) Symbol = String$(iRet1, 0) iRet2 = GetLocaleInfo(Locale, LOCALE_SDATE, Symbol, iRet1) Pos = InStr(Symbol, Chr$(0)) If Pos > 0 Then Symbol = Left$(Symbol, Pos - 1) MsgBox "Regional Setting = " + Symbol End If End Sub Private Sub SetRegionalSettings() 'Change the regional setting Dim Symbol As String Dim iRet As Long Dim Locale As Long 'LOCALE_SDATE is the constant for the date separator 'as stated in declarations 'for any other locale setting just change the constant 'Function can also be re-written to take the 'locale information being set as a parameter Locale = GetUserDefaultLCID() 'Get user Locale ID Symbol = "-" 'New character for the locale iRet = SetLocaleInfo(Locale, LOCALE_SDATE, Symbol) End Sub
:eek: more then i asked for :eek:
but yes realy great
many thanks