ロケール情報の取得          <TOP>


GetLocaleInfo()関数は、第2引数のLCTypeに定数を指定することによって、いろいろなロケール情報を取得できます。

GetLocaleInfo ロケール情報を取得

 

 

コントロールパネル → 地域と言語のオプション

 

'================================================================
'= ロケール情報の取得
'=    (GetLocaleInfo.bas)
'================================================================
#include "Windows.bi"

' ロケール情報を取得
Declare Function Api_GetLocaleInfo& Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale&, ByVal LCType&, ByVal lpLCData$, ByVal cchData&)

Var Shared List1 As Object
Var Shared Text1 As Object
Var Shared Text2 As Object

List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14

Var Shared Locale(79, 2) As String

'================================================================
'=
'================================================================
Declare Function GetInfo(lInfo As Long) As String
Function GetInfo(lInfo As Long) As String
    Var Buffer As String
    Var Ret As Long

    Buffer = String$(256, 0)
    Ret = Api_GetLocaleInfo(LOCALE_USER_DEFAULT, ByVal lInfo, Buffer, Len(Buffer))
    If Ret > 0 Then
        GetInfo = Left$(Buffer, Ret - 1)
    Else
        GetInfo = ""
    End If
End Function

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i = 0 To 79
        For j = 0 To 2
            read Locale(i, j)
        Next
        List1.AddString Locale(i, 2)
    Next

    data LOCALE_ILANGUAGE            , &H1    , 言語ID 
    data LOCALE_SLANGUAGE            , &H2    , 言語名 
    data LOCALE_SENGLANGUAGE         , &H1001 , 言語英語名 
    data LOCALE_SABBREVLANGNAME      , &H3    , 言語省略名 
    data LOCALE_SNATIVELANGNAME      , &H4    , 言語固有名 
    data LOCALE_ICOUNTRY             , &H5    , 国コード 
    data LOCALE_SCOUNTRY             , &H6    , 国名 
    data LOCALE_SENGCOUNTRY          , &H1002 , 国英語名 
    data LOCALE_SABBREVCTRYNAME      , &H7    , 国省略名 
    data LOCALE_SNATIVECTRYNAME      , &H8    , 国固有名 
    data LOCALE_IDEFAULTLANGUAGE     , &H9    , デフォルト言語ID 
    data LOCALE_IDEFAULTCOUNTRY      , &HA    , デフォルト国コード 
    data LOCALE_IDEFAULTCODEPAGE     , &HB    , デフォルトOEMコードページ 
    data LOCALE_IDEFAULTANSICODEPAGE , &H1004 , デフォルトANSIコードページ 
    data LOCALE_IDEFAULTMACCODEPAGE  , &H1011 , デフォルトMACコードページ 
    data LOCALE_FONTSIGNATURE        , &H58   , フォント署名 
    data LOCALE_SISO639LANGNAME      , &H59   , ISO言語省略名 
    data LOCALE_SISO3166CTRYNAME     , &H5A   , ISO国省略名 

    data LOCALE_SLIST                , &HC    , 区切り記号 
    data LOCALE_IMEASURE             , &HD    , 単位 
    data LOCALE_SDECIMAL             , &HE    , 小数点の記号 
    data LOCALE_STHOUSAND            , &HF    , 桁区切り記号 
    data LOCALE_SGROUPING            , &H10   , 区切る桁数 
    data LOCALE_IDIGITS              , &H11   , 小数点以下の桁数 
    data LOCALE_ILZERO               , &H12   , 少数前ゼロの桁数 
    data LOCALE_INEGNUMBER           , &H1010 , 負の値の形式 
    data LOCALE_SNATIVEDIGITS        , &H13   , 0から9の表記 
    data LOCALE_SPOSITIVESIGN        , &H50   , 正の記号 
    data LOCALE_SNEGATIVESIGN        , &H51   , 負の記号 
    data LOCALE_IPOSSIGNPOSN         , &H52   , 正の記号の位置 
    data LOCALE_INEGSIGNPOSN         , &H53   , 負の記号の位置 

    data LOCALE_SCURRENCY            , &H14   , 通貨記号 
    data LOCALE_SINTLSYMBOL          , &H15   , 国際通貨記号 
    data LOCALE_SMONDECIMALSEP       , &H16   , 小数点の記号 
    data LOCALE_SMONTHOUSANDSEP      , &H17   , 桁区切り記号 
    data LOCALE_SMONGROUPING         , &H18   , 区切る桁数 
    data LOCALE_ICURRDIGITS          , &H19   , 小数点以下の桁数 
    data LOCALE_IINTLCURRDIGITS      , &H1A   , 小数点以下の桁数 
    data LOCALE_ICURRENCY            , &H1B   , 正の値の形式 
    data LOCALE_INEGCURR             , &H1C   , 負の値の形式 
    data LOCALE_IPOSSYMPRECEDES      , &H54   , 正の通貨記号の位置 
    data LOCALE_IPOSSEPBYSPACE       , &H55   , 正の通貨記号の分離位置 
    data LOCALE_INEGSYMPRECEDES      , &H56   , 負の通貨記号の位置 
    data LOCALE_INEGSEPBYSPACE       , &H57   , 負の通貨記号の分離位置 

    data LOCALE_SDATE                , &H1D   , 区切り記号 
    data LOCALE_SSHORTDATE           , &H1F   , 短い形式 
    data LOCALE_SLONGDATE            , &H20   , 長い形式 
    data LOCALE_IDATE                , &H21   , 短い形式の年月日順 
    data LOCALE_ILDATE               , &H22   , 長い形式の年月日順 
    data LOCALE_ICENTURY             , &H24   , 年の桁数 
    data LOCALE_IDAYLZERO            , &H26   , 日前ゼロの有無 
    data LOCALE_IMONLZERO            , &H27   , 月前ゼロの有無 
    data LOCALE_ICALENDARType        , &H1009 , カレンダの種類 
    data LOCALE_IOPTIONALCALENDAR    , &H100B , 追加カレンダの種類 
    data LOCALE_IFIRSTDAYOFWEEK      , &H100C , 週の先頭日 
    data LOCALE_IFIRSTWEEKOFYEAR     , &H100D , 年の先頭月 
    data LOCALE_SDAYNAME1            , &H2A   , 週の第1日名 
    data LOCALE_SDAYNAME2            , &H2B   , 週の第2日名 
    data LOCALE_SDAYNAME3            , &H2C   , 週の第3日名 
    data LOCALE_SDAYNAME7            , &H30   , 週の第7日名 
    data LOCALE_SABBREVDAYNAME1      , &H31   , 週の第1日省略名 
    data LOCALE_SABBREVDAYNAME2      , &H32   , 週の第2日省略名 
    data LOCALE_SABBREVDAYNAME3      , &H33   , 週の第3日省略名 
    data LOCALE_SABBREVDAYNAME7      , &H37   , 週の第7日省略名 
    data LOCALE_SMONTHNAME1          , &H38   , 年の第1月名 
    data LOCALE_SMONTHNAME2          , &H39   , 年の第2月名 
    data LOCALE_SMONTHNAME3          , &H3A   , 年の第3月名 
    data LOCALE_SMONTHNAME12         , &H43   , 年の第12月名 
    data LOCALE_SMONTHNAME13         , &H100E , 年の第13月名 
    data LOCALE_SABBREVMONTHNAME1    , &H44   , 年の第1月省略名 
    data LOCALE_SABBREVMONTHNAME2    , &H45   , 年の第2月省略名 
    data LOCALE_SABBREVMONTHNAME3    , &H46   , 年の第3月省略名 
    data LOCALE_SABBREVMONTHNAME12   , &H4F   , 年の第12月省略名

    data LOCALE_STIME                , &H1E   , 区切り記号 
    data LOCALE_STIMEFORMAT          , &H1003 , 時間の形式 
    data LOCALE_ITIME                , &H23   , 時間制(12/24) 
    data LOCALE_ITIMEMARKPOSN        , &H1005 , 午前午後記号の位置 
    data LOCALE_ITLZERO              , &H25   , 時刻前ゼロの有無 
    data LOCALE_S1159                , &H28   , 午前の記号 
    data LOCALE_S2359                , &H29   , 午後の記号 
End Sub

'================================================================
'=
'================================================================
Declare Sub List1_Change edecl ()
Sub List1_Change()

    No = List1.GetCursel
    Text1.SetWindowText GetInfo(val(Locale(No, 1)))
    Text2.SetWindowText Locale(No, 0)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End