How do I identify the current locale?

J

JR

Hi.

I need to be able to identify the locale that a system is using in order to
use and IF, THEN, ELSE or CASE statement. This is because a solution that
works for English doesn't work for French, and the solution for French
doesn't work for English.

Is there a simple piece of VBA that will question the system so that I can
then select which line of code to use depending on the locale?

Your help is greatly appreciated, thanks in advance.

JR
 
R

Rick Rothstein

I think you can use this...

LCID = Application.LanguageSettings.LanguageID(msoLanguageIDUI)

It returns the LCID as shown on this webpage...

http://www.science.co.il/Language/Locale-Codes.asp?s=codepage

It returns 1033 for my English(US) system (not sure which English code page
you were referring to) and it should return 1036 for a French(France) system
(although like the English code pages, there are several for French besides
France).
 
J

JR

Thank you both. Now I'll have to study Mr De Bruin's information and see
whether I can get my un-techie head round it. :)

JR
 
R

Rick Rothstein

I can't test this as I don't have access to any computers in other
countries, but the following should return the language that the computer
running the code is set up for. So, using it should allow you to use a test
structure similar to this in your own code...

If UserLanguage() = "English" Then
' The computer running this code has English as its native language
ElseIf UserLanguage() = "French" Then
' The computer running this code has English as its native language
Else
MsgBox "You didn't test for this language: " & UserLanguage()
End If

Put all of the following in a Module (Insert/Module from the VB editor's
menu bar), then just call UserLanguage in your own code and it will return
the language set up in the regional settings for the computer running your
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 Const LOCALE_SNATIVELANGNAME As Long = &H4

Public Function UserLanguage() As String
Dim sReturn As String, lReturn As Long, dwLocaleID As Long, Code As Long
Code = LOCALE_SNATIVELANGNAME
dwLocaleID = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
lReturn = GetLocaleInfo(dwLocaleID, Code, sReturn, Len(sReturn))
If lReturn Then
sReturn = Space$(lReturn)
lReturn = GetLocaleInfo(dwLocaleID, Code, sReturn, Len(sReturn))
If lReturn Then UserLanguage = Left$(sReturn, lReturn - 1)
End If
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top