Microsoft MVP성태의 닷넷 이야기
.NET Framework: 657. CultureInfo.GetCultures가 반환하는 값 [링크 복사], [링크+제목 복사]
조회: 13868
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

CultureInfo.GetCultures가 반환하는 값

아래의 문서에 보면,

CultureTypes 열거형
; https://learn.microsoft.com/ko-kr/dotnet/api/system.globalization.culturetypes

CultureInfo.GetCultures로 얻을 수 있는 목록의 유형이 다음과 같다고 나옵니다.

[ComVisible(true)]
[Flags]
public enum CultureTypes
{
    NeutralCultures = 1,
    SpecificCultures = 2,
    InstalledWin32Cultures = 4,
    AllCultures = 7,
    UserCustomCulture = 8,
    ReplacementCultures = 16,
    WindowsOnlyCultures = 32,
    FrameworkCultures = 64
}

이 중에서 다음의 2개는 현재 사용하지 않는다고 하는데,

  1. FrameworkCultures
  2. WindowsOnlyCultures

FrameworkCultures는 아마도 .NET Framework 2.0 호환으로만 남아 있는 것 같고, WindowsOnlyCultures는 문서 상으로는 빈 배열을 반환한다고 하는데 이는 .NET 4.0 이상의 환경에서 그런 것이고 2.0에서 테스트해 보면 여전히 (제 시스템의 경우 125개 항목을 가진) 값을 반환하고 있습니다.

그럼, ^^ 나머지 값에 대해 어떻게 차이가 있는지 한번 테스트를 해볼까요? ^^

CultureTypes의 첫 번째 항목인 NeutralCultures 목록을 먼저 확인해 보겠습니다.

cultures = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
SortedDictionary<string, string> sorted = new SortedDictionary<string, string>();

foreach (CultureInfo culture in cultures)
{
    string name = string.Format("0x{0:x} {1} {2}", culture.LCID, culture.TwoLetterISOLanguageName, culture.EnglishName);
    sorted[culture.LCID] = name;
}

foreach (var item in sorted)
{
    Console.WriteLine(string.Format("{0} \t {1}", item.Key, item.Value));
}

/*
출력 결과:
1       1        0x1 ar Arabic
2       2        0x2 bg Bulgarian
3       3        0x3 ca Catalan
4       4        0x4 zh Chinese (Simplified)
5       5        0x5 cs Czech
6       6        0x6 da Danish
7       7        0x7 de German
8       8        0x8 el Greek
9       9        0x9 en English
10      10       0xa es Spanish
11      11       0xb fi Finnish
12      12       0xc fr French
13      13       0xd he Hebrew
14      14       0xe hu Hungarian
15      15       0xf is Icelandic
16      16       0x10 it Italian
17      17       0x11 ja Japanese
18      18       0x12 ko Korean
19      19       0x13 nl Dutch
20      20       0x14 no Norwegian
21      21       0x15 pl Polish
22      22       0x16 pt Portuguese
23      24       0x18 ro Romanian
24      25       0x19 ru Russian
25      26       0x1a hr Croatian
26      27       0x1b sk Slovak
27      28       0x1c sq Albanian
28      29       0x1d sv Swedish
29      30       0x1e th Thai
30      31       0x1f tr Turkish
31      32       0x20 ur Urdu
32      33       0x21 id Indonesian
33      34       0x22 uk Ukrainian
34      35       0x23 be Belarusian
35      36       0x24 sl Slovenian
36      37       0x25 et Estonian
37      38       0x26 lv Latvian
38      39       0x27 lt Lithuanian
39      41       0x29 fa Persian
40      42       0x2a vi Vietnamese
41      43       0x2b hy Armenian
42      44       0x2c az Azeri
43      45       0x2d eu Basque
44      47       0x2f mk Macedonian
45      54       0x36 af Afrikaans
46      55       0x37 ka Georgian
47      56       0x38 fo Faroese
48      57       0x39 hi Hindi
49      62       0x3e ms Malay
50      63       0x3f kk Kazakh
51      64       0x40 ky Kyrgyz
52      65       0x41 sw Kiswahili
53      67       0x43 uz Uzbek
54      68       0x44 tt Tatar
55      70       0x46 pa Punjabi
56      71       0x47 gu Gujarati
57      73       0x49 ta Tamil
58      74       0x4a te Telugu
59      75       0x4b kn Kannada
60      78       0x4e mr Marathi
61      79       0x4f sa Sanskrit
62      80       0x50 mn Mongolian
63      86       0x56 gl Galician
64      87       0x57 kok Konkani
65      90       0x5a syr Syriac
66      101      0x65 dv Divehi
67      127      0x7f iv Invariant Language (Invariant Country)
68      31748    0x7c04 zh Chinese (Traditional)
69      31770    0x7c1a sr Serbian
*/

보는 바와 같이 Region이 없는 것을 의미합니다. 이 중에서 특이한 값이 있다면 LCID == 127에 해당하는 "Invariant Language"입니다. 즉, Region이 없는 경우는 물론이고 언어 영역 조차도 중립적인 값을 포함하고 있습니다.

Region 영역을 명시한 Locale을 열람하고 싶다면 SpecificCultures를 사용하면 됩니다.

CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

foreach (CultureInfo culture in cultures)
{
    RegionInfo region = new RegionInfo(culture.LCID);
    string ietfLanguageTag = string.Format("{0}-{1}", culture.Parent.TwoLetterISOLanguageName,
            region.TwoLetterISORegionName);

    string name = string.Format("{0} - {1}", region.EnglishName, culture.Parent.EnglishName);

    sorted[ietfLanguageTag] = name;
}

제 윈도우 10의 경우 다음과 같은 출력 결과를 보입니다.

1       1025     0x401 ar-SA Saudi Arabia - Arabic
2       1026     0x402 bg-BG Bulgaria - Bulgarian
3       1027     0x403 ca-ES Spain - Catalan
4       1028     0x404 zh-TW Taiwan - Chinese (Traditional)
5       1029     0x405 cs-CZ Czech Republic - Czech
6       1030     0x406 da-DK Denmark - Danish
7       1031     0x407 de-DE Germany - German
8       1032     0x408 el-GR Greece - Greek
9       1033     0x409 en-US United States - English
10      1035     0x40b fi-FI Finland - Finnish
11      1036     0x40c fr-FR France - French
12      1037     0x40d he-IL Israel - Hebrew
13      1038     0x40e hu-HU Hungary - Hungarian
14      1039     0x40f is-IS Iceland - Icelandic
15      1040     0x410 it-IT Italy - Italian
16      1041     0x411 ja-JP Japan - Japanese
17      1042     0x412 ko-KR Korea - Korean
18      1043     0x413 nl-NL Netherlands - Dutch
19      1044     0x414 no-NO Norway - Norwegian
20      1045     0x415 pl-PL Poland - Polish
21      1046     0x416 pt-BR Brazil - Portuguese
22      1047     0x417 iv-CH Switzerland - Invariant Language (Invariant Country)
23      1048     0x418 ro-RO Romania - Romanian
24      1049     0x419 ru-RU Russia - Russian
25      1050     0x41a hr-HR Croatia - Croatian
26      1051     0x41b sk-SK Slovakia - Slovak
27      1052     0x41c sq-AL Albania - Albanian
28      1053     0x41d sv-SE Sweden - Swedish
29      1054     0x41e th-TH Thailand - Thai
30      1055     0x41f tr-TR Turkey - Turkish
31      1056     0x420 ur-PK Islamic Republic of Pakistan - Urdu
32      1057     0x421 id-ID Indonesia - Indonesian
33      1058     0x422 uk-UA Ukraine - Ukrainian
34      1059     0x423 be-BY Belarus - Belarusian
35      1060     0x424 sl-SI Slovenia - Slovenian
36      1061     0x425 et-EE Estonia - Estonian
37      1062     0x426 lv-LV Latvia - Latvian
38      1063     0x427 lt-LT Lithuania - Lithuanian
39      1064     0x428 iv-TJ Tajikistan - Invariant Language (Invariant Country)
40      1065     0x429 fa-IR Iran - Persian
41      1066     0x42a vi-VN Vietnam - Vietnamese
42      1067     0x42b hy-AM Armenia - Armenian
43      1068     0x42c az-AZ Azerbaijan - Azeri
44      1069     0x42d eu-ES Spain - Basque
45      1070     0x42e iv-DE Germany - Invariant Language (Invariant Country)
46      1071     0x42f mk-MK Macedonia (FYROM) - Macedonian
47      1072     0x430 iv-ZA South Africa - Invariant Language (Invariant Country)
48      1073     0x431 iv-ZA South Africa - Invariant Language (Invariant Country)
49      1074     0x432 iv-ZA South Africa - Invariant Language (Invariant Country)
50      1075     0x433 iv-ZA South Africa - Invariant Language (Invariant Country)
51      1076     0x434 iv-ZA South Africa - Invariant Language (Invariant Country)
52      1077     0x435 iv-ZA South Africa - Invariant Language (Invariant Country)
53      1078     0x436 af-ZA South Africa - Afrikaans
54      1079     0x437 ka-GE Georgia - Georgian
55      1080     0x438 fo-FO Faroe Islands - Faroese
56      1081     0x439 hi-IN India - Hindi
57      1082     0x43a iv-MT Malta - Invariant Language (Invariant Country)
58      1083     0x43b iv-NO Norway - Invariant Language (Invariant Country)
59      1085     0x43d iv-001 World - Invariant Language (Invariant Country)
60      1086     0x43e ms-MY Malaysia - Malay
61      1087     0x43f kk-KZ Kazakhstan - Kazakh
62      1088     0x440 ky-KG Kyrgyzstan - Kyrgyz
63      1089     0x441 sw-KE Kenya - Kiswahili
64      1090     0x442 iv-TM Turkmenistan - Invariant Language (Invariant Country)
65      1091     0x443 uz-UZ Uzbekistan - Uzbek
66      1092     0x444 tt-RU Russia - Tatar
67      1093     0x445 iv-IN India - Invariant Language (Invariant Country)
68      1094     0x446 pa-IN India - Punjabi
69      1095     0x447 gu-IN India - Gujarati
70      1096     0x448 iv-IN India - Invariant Language (Invariant Country)
71      1097     0x449 ta-IN India - Tamil
72      1098     0x44a te-IN India - Telugu
73      1099     0x44b kn-IN India - Kannada
74      1100     0x44c iv-IN India - Invariant Language (Invariant Country)
75      1101     0x44d iv-IN India - Invariant Language (Invariant Country)
76      1102     0x44e mr-IN India - Marathi
77      1103     0x44f sa-IN India - Sanskrit
78      1104     0x450 mn-MN Mongolia - Mongolian
79      1105     0x451 iv-CN China - Invariant Language (Invariant Country)
80      1106     0x452 iv-GB United Kingdom - Invariant Language (Invariant Country)
81      1107     0x453 iv-KH Cambodia - Invariant Language (Invariant Country)
82      1108     0x454 iv-LA Laos - Invariant Language (Invariant Country)
83      1109     0x455 iv-MM Myanmar - Invariant Language (Invariant Country)
84      1110     0x456 gl-ES Spain - Galician
85      1111     0x457 kok-IN India - Konkani
86      1112     0x458 iv-IN India - Invariant Language (Invariant Country)
87      1113     0x459 iv-IN India - Invariant Language (Invariant Country)
88      1114     0x45a syr-SY Syria - Syriac
89      1115     0x45b iv-LK Sri Lanka - Invariant Language (Invariant Country)
90      1116     0x45c iv-US United States - Invariant Language (Invariant Country)
91      1117     0x45d iv-CA Canada - Invariant Language (Invariant Country)
92      1118     0x45e iv-ET Ethiopia - Invariant Language (Invariant Country)
93      1119     0x45f iv-MA Morocco - Invariant Language (Invariant Country)
94      1121     0x461 iv-NP Nepal - Invariant Language (Invariant Country)
95      1122     0x462 iv-NL Netherlands - Invariant Language (Invariant Country)
96      1123     0x463 iv-AF Afghanistan - Invariant Language (Invariant Country)
97      1124     0x464 iv-PH Philippines - Invariant Language (Invariant Country)
98      1125     0x465 dv-MV Maldives - Divehi
99      1126     0x466 iv-NG Nigeria - Invariant Language (Invariant Country)
100     1127     0x467 iv-NG Nigeria - Invariant Language (Invariant Country)
101     1128     0x468 iv-NG Nigeria - Invariant Language (Invariant Country)
102     1129     0x469 iv-NG Nigeria - Invariant Language (Invariant Country)
103     1130     0x46a iv-NG Nigeria - Invariant Language (Invariant Country)
104     1131     0x46b iv-BO Bolivia - Invariant Language (Invariant Country)
105     1132     0x46c iv-ZA South Africa - Invariant Language (Invariant Country)
106     1133     0x46d iv-RU Russia - Invariant Language (Invariant Country)
107     1134     0x46e iv-LU Luxembourg - Invariant Language (Invariant Country)
108     1135     0x46f iv-GL Greenland - Invariant Language (Invariant Country)
109     1136     0x470 iv-NG Nigeria - Invariant Language (Invariant Country)
110     1137     0x471 iv-NG Nigeria - Invariant Language (Invariant Country)
111     1138     0x472 iv-ET Ethiopia - Invariant Language (Invariant Country)
112     1139     0x473 iv-ET Ethiopia - Invariant Language (Invariant Country)
113     1140     0x474 iv-PY Paraguay - Invariant Language (Invariant Country)
114     1141     0x475 iv-US United States - Invariant Language (Invariant Country)
115     1142     0x476 iv-001 World - Invariant Language (Invariant Country)
116     1143     0x477 iv-SO Somalia - Invariant Language (Invariant Country)
117     1144     0x478 iv-CN China - Invariant Language (Invariant Country)
118     1145     0x479 iv-029 Caribbean - Invariant Language (Invariant Country)
119     1146     0x47a iv-CL Chile - Invariant Language (Invariant Country)
120     1148     0x47c iv-CA Canada - Invariant Language (Invariant Country)
121     1150     0x47e iv-FR France - Invariant Language (Invariant Country)
122     1152     0x480 iv-CN China - Invariant Language (Invariant Country)
123     1153     0x481 iv-NZ New Zealand - Invariant Language (Invariant Country)
124     1154     0x482 iv-FR France - Invariant Language (Invariant Country)
125     1155     0x483 iv-FR France - Invariant Language (Invariant Country)
126     1156     0x484 iv-FR France - Invariant Language (Invariant Country)
127     1157     0x485 iv-RU Russia - Invariant Language (Invariant Country)
128     1158     0x486 iv-GT Guatemala - Invariant Language (Invariant Country)
129     1159     0x487 iv-RW Rwanda - Invariant Language (Invariant Country)
130     1160     0x488 iv-SN Senegal - Invariant Language (Invariant Country)
131     1164     0x48c iv-AF Afghanistan - Invariant Language (Invariant Country)
132     1169     0x491 iv-GB United Kingdom - Invariant Language (Invariant Country)
133     1170     0x492 iv-IQ Iraq - Invariant Language (Invariant Country)
134     2049     0x801 ar-IQ Iraq - Arabic
135     2051     0x803 ca-ES Spain - Catalan (Catalan)
136     2052     0x804 zh-CN People's Republic of China - Chinese (Simplified)
137     2055     0x807 de-CH Switzerland - German
138     2057     0x809 en-GB United Kingdom - English
139     2058     0x80a es-MX Mexico - Spanish
140     2060     0x80c fr-BE Belgium - French
141     2064     0x810 it-CH Switzerland - Italian
142     2067     0x813 nl-BE Belgium - Dutch
143     2068     0x814 no-NO Norway - Norwegian
144     2070     0x816 pt-PT Portugal - Portuguese
145     2072     0x818 ro-MD Moldova - Romanian
146     2073     0x819 ru-MD Moldova - Russian
147     2074     0x81a sr-CS Serbia and Montenegro (Former) - Serbian
148     2077     0x81d sv-FI Finland - Swedish
149     2080     0x820 ur-IN India - Urdu
150     2092     0x82c az-AZ Azerbaijan - Azeri
151     2094     0x82e iv-DE Germany - Invariant Language (Invariant Country)
152     2098     0x832 iv-BW Botswana - Invariant Language (Invariant Country)
153     2107     0x83b iv-SE Sweden - Invariant Language (Invariant Country)
154     2108     0x83c iv-IE Ireland - Invariant Language (Invariant Country)
155     2110     0x83e ms-BN Brunei Darussalam - Malay
156     2115     0x843 uz-UZ Uzbekistan - Uzbek
157     2117     0x845 iv-BD Bangladesh - Invariant Language (Invariant Country)
158     2118     0x846 iv-PK Pakistan - Invariant Language (Invariant Country)
159     2121     0x849 ta-LK Sri Lanka - Tamil
160     2128     0x850 iv-CN China - Invariant Language (Invariant Country)
161     2137     0x859 iv-PK Pakistan - Invariant Language (Invariant Country)
162     2141     0x85d iv-CA Canada - Invariant Language (Invariant Country)
163     2143     0x85f iv-DZ Algeria - Invariant Language (Invariant Country)
164     2144     0x860 iv-IN India - Invariant Language (Invariant Country)
165     2145     0x861 iv-IN India - Invariant Language (Invariant Country)
166     2151     0x867 iv-SN Senegal - Invariant Language (Invariant Country)
167     2155     0x86b iv-EC Ecuador - Invariant Language (Invariant Country)
168     2163     0x873 iv-ER Eritrea - Invariant Language (Invariant Country)
169     3073     0xc01 ar-EG Egypt - Arabic
170     3076     0xc04 zh-HK Hong Kong S.A.R. - Chinese (Traditional)
171     3079     0xc07 de-AT Austria - German
172     3081     0xc09 en-AU Australia - English
173     3082     0xc0a es-ES Spain - Spanish
174     3084     0xc0c fr-CA Canada - French
175     3098     0xc1a sr-CS Serbia and Montenegro (Former) - Serbian
176     3131     0xc3b iv-FI Finland - Invariant Language (Invariant Country)
177     3152     0xc50 iv-MN Mongolia - Invariant Language (Invariant Country)
178     3153     0xc51 iv-BT Bhutan - Invariant Language (Invariant Country)
179     3179     0xc6b iv-PE Peru - Invariant Language (Invariant Country)
180     4097     0x1001 ar-LY Libya - Arabic
181     4100     0x1004 zh-SG Singapore - Chinese (Simplified)
182     4103     0x1007 de-LU Luxembourg - German
183     4105     0x1009 en-CA Canada - English
184     4106     0x100a es-GT Guatemala - Spanish
185     4108     0x100c fr-CH Switzerland - French
186     4122     0x101a hr-BA Bosnia and Herzegovina - Croatian
187     4155     0x103b iv-NO Norway - Invariant Language (Invariant Country)
188     4191     0x105f iv-MA Morocco - Invariant Language (Invariant Country)
189     5121     0x1401 ar-DZ Algeria - Arabic
190     5124     0x1404 zh-MO Macao S.A.R. - Chinese (Traditional)
191     5127     0x1407 de-LI Liechtenstein - German
192     5129     0x1409 en-NZ New Zealand - English
193     5130     0x140a es-CR Costa Rica - Spanish
194     5132     0x140c fr-LU Luxembourg - French
195     5146     0x141a iv-BA Bosnia and Herzegovina - Invariant Language (Invariant Country)
196     5179     0x143b iv-SE Sweden - Invariant Language (Invariant Country)
197     6145     0x1801 ar-MA Morocco - Arabic
198     6153     0x1809 en-IE Ireland - English
199     6154     0x180a es-PA Panama - Spanish
200     6156     0x180c fr-MC Principality of Monaco - French
201     6170     0x181a iv-BA Bosnia and Herzegovina - Invariant Language (Invariant Country)
202     6203     0x183b iv-NO Norway - Invariant Language (Invariant Country)
203     7169     0x1c01 ar-TN Tunisia - Arabic
204     7177     0x1c09 en-ZA South Africa - English
205     7178     0x1c0a es-DO Dominican Republic - Spanish
206     7180     0x1c0c fr-029 Caribbean - French
207     7194     0x1c1a iv-BA Bosnia and Herzegovina - Invariant Language (Invariant Country)
208     7227     0x1c3b iv-SE Sweden - Invariant Language (Invariant Country)
209     8193     0x2001 ar-OM Oman - Arabic
210     8201     0x2009 en-JM Jamaica - English
211     8202     0x200a es-VE Venezuela - Spanish
212     8204     0x200c fr-RE Reunion - French
213     8218     0x201a iv-BA Bosnia and Herzegovina - Invariant Language (Invariant Country)
214     8251     0x203b iv-FI Finland - Invariant Language (Invariant Country)
215     9217     0x2401 ar-YE Yemen - Arabic
216     9225     0x2409 en-029 Caribbean - English
217     9226     0x240a es-CO Colombia - Spanish
218     9228     0x240c fr-CD Congo (DRC) - French
219     9242     0x241a iv-RS Serbia - Invariant Language (Invariant Country)
220     9275     0x243b iv-FI Finland - Invariant Language (Invariant Country)
221     10241    0x2801 ar-SY Syria - Arabic
222     10249    0x2809 en-BZ Belize - English
223     10250    0x280a es-PE Peru - Spanish
224     10252    0x280c fr-SN Senegal - French
225     10266    0x281a iv-RS Serbia - Invariant Language (Invariant Country)
226     11265    0x2c01 ar-JO Jordan - Arabic
227     11273    0x2c09 en-TT Trinidad and Tobago - English
228     11274    0x2c0a es-AR Argentina - Spanish
229     11276    0x2c0c fr-CM Cameroon - French
230     11290    0x2c1a iv-ME Montenegro - Invariant Language (Invariant Country)
231     12289    0x3001 ar-LB Lebanon - Arabic
232     12297    0x3009 en-ZW Zimbabwe - English
233     12298    0x300a es-EC Ecuador - Spanish
234     12300    0x300c fr-CI Cote d’Ivoire - French
235     12314    0x301a iv-ME Montenegro - Invariant Language (Invariant Country)
236     13313    0x3401 ar-KW Kuwait - Arabic
237     13321    0x3409 en-PH Republic of the Philippines - English
238     13322    0x340a es-CL Chile - Spanish
239     13324    0x340c fr-ML Mali - French
240     14337    0x3801 ar-AE U.A.E. - Arabic
241     14345    0x3809 en-ID Indonesia - English
242     14346    0x380a es-UY Uruguay - Spanish
243     14348    0x380c fr-MA Morocco - French
244     15361    0x3c01 ar-BH Bahrain - Arabic
245     15369    0x3c09 en-HK Hong Kong SAR - English
246     15370    0x3c0a es-PY Paraguay - Spanish
247     15372    0x3c0c fr-HT Haiti - French
248     16385    0x4001 ar-QA Qatar - Arabic
249     16393    0x4009 en-IN India - English
250     16394    0x400a es-BO Bolivia - Spanish
251     17417    0x4409 en-MY Malaysia - English
252     17418    0x440a es-SV El Salvador - Spanish
253     18441    0x4809 en-SG Singapore - English
254     18442    0x480a es-HN Honduras - Spanish
255     19466    0x4c0a es-NI Nicaragua - Spanish
256     20490    0x500a es-PR Puerto Rico - Spanish
257     21514    0x540a es-US United States - Spanish
258     22538    0x580a es-419 Latin America - Spanish
259     23562    0x5c0a es-CU Cuba - Spanish

다음으로 알아볼 InstalledWin32Cultures는 문서에 다음과 같이 설명하고 있습니다.

Windows 운영 체제에 설치된 모든 문화권입니다. .NET Framework에서 지원하는 모든 문화권이 운영 체제에 설치되어 있는 것은 아닙니다.

그런데, 실제로 값을 구해보면 SpecificCultures 경우의 수에 NeutralCultures에 포함되어 있던 "127 0x7f iv Invariant Language (Invariant Country)" 항목을 추가해서 나오는 정도입니다. 즉, SpecificCultures의 출력 결과가 259개였고, LCID == 127 경우를 하나 더 포함하기 때문에 총 260가지의 항목이 구해집니다.

여기까지 이해했으면 AllCultures의 의미를 아는 것은 쉽습니다. CultureTypes 열거형이 Flags 특성을 가지고 있기 때문에 7의 값을 가진 AllCutures는 다음의 의미를 지닙니다.

AllCutures == InstalledWin32Cultures | SpecificCultures | NeutralCultures

그래서 NeutralCultures == 69개 + SpecificCultures == 259개이므로 총 328개의 항목을 출력합니다.

이제 남은 항목이 CultureTypes.ReplacementCultures, CultureTypes.UserCustomCulture 2가지인데 모두 "사용자 지정 문화권"이라는 정도의 설명으로만 이번에는 만족하고 넘어가겠습니다. ^^




SpecificCultures 관련해서 대체로 이 값들은 다음의 레지스트리를 통해 구해지는 것을 알 수 있습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language

가령 Language의 항목은 (제 시스템 기준) 263개의 항목이 등록되어 있습니다. 이 수는 SpecificCultures == 259개가 반환하는 값에 다음의 4가지 값이 더 들어간 것에 불과합니다.

  • Default
  • InstallLanguage
  • 0x40a: {ES}
  • 0x1000: Customized cultures

그리고 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CustomLocale" 키도 있는데 이 부분이 아마도 CultureTypes.UserCustomCulture로 반환하는 구역이 아닌가... 예상됩니다. ^^




위의 결과는 .NET 4.0으로 오면 달라지는 것이 있습니다. 각각의 항목 수를 보면,

CultureTypes.AllCultures: 840
CultureTypes.FrameworkCultures: 203
CultureTypes.InstalledWin32Cultures: 428
CultureTypes.NeutralCultures: 279
CultureTypes.ReplacementCultures: 0
CultureTypes.SpecificCultures: 561
CultureTypes.UserCustomCulture: 0
CultureTypes.WindowsOnlyCultures: 0

SpecificCultures 수부터 561개인데, 이는 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale" 레지스트리보다 300여개가 많은 수를 포함합니다. 그것들을 어디서 가져오는지는 아직 잘 모르겠습니다. ^^

그래도 문서에 명시된 데로 AllCultures == SpecificCultures + NeutralCultures + (InstalledWin32Cultures)라는 점에는 변함이 없습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 11/17/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12467정성태12/29/202010136.NET Framework: 989. HttpContextAccessor를 통해 이해하는 AsyncLocal<T> [1]파일 다운로드1
12466정성태12/29/20208155.NET Framework: 988. C# - 지연 실행이 꼭 필요한 상황이 아니라면 singleton 패턴에서 DCLP보다는 static 초기화를 권장파일 다운로드1
12465정성태12/29/202011259.NET Framework: 987. .NET Profiler - FunctionID와 연관된 ClassID를 구할 수 없는 문제
12464정성태12/29/202010104.NET Framework: 986. pptfont.exe - PPT 파일에 숨겨진 폰트 설정을 일괄 삭제
12463정성태12/29/20209169개발 환경 구성: 520. RDP(mstsc.exe)의 다중 모니터 옵션 /multimon, /span
12462정성태12/27/202010755디버깅 기술: 177. windbg - (ASP.NET 환경에서 유용한) netext 확장
12461정성태12/21/202011572.NET Framework: 985. .NET 코드 리뷰 팁 [3]
12460정성태12/18/20209274기타: 78. 도서 소개 - C#으로 배우는 암호학
12459정성태12/16/20209689Linux: 35. C# - 리눅스 환경에서 클라이언트 소켓의 ephemeral port 재사용파일 다운로드1
12458정성태12/16/20209200오류 유형: 694. C# - Task.Start 메서드 호출 시 "System.InvalidOperationException: 'Start may not be called on a task that has completed.'" 예외 발생 [1]
12457정성태12/15/20208758Windows: 185. C# - Windows 10/2019부터 추가된 SIO_TCP_INFO파일 다운로드1
12456정성태12/15/20209017VS.NET IDE: 156. Visual Studio - "Migrate packages.config to PackageReference"
12455정성태12/15/20208534오류 유형: 693. DLL 로딩 시 0x800704ec - This Program is Blocked by Group Policy
12454정성태12/15/20209112Windows: 184. Windows - AppLocker의 "DLL Rules"를 이용해 임의 경로에 설치한 DLL의 로딩을 막는 방법 [1]
12453정성태12/14/202010089.NET Framework: 984. C# - bool / BOOL / VARIANT_BOOL에 대한 Interop [1]파일 다운로드1
12452정성태12/14/202010238Windows: 183. 설정은 가능하지만 구할 수는 없는 TcpTimedWaitDelay 값
12451정성태12/14/20209448Windows: 182. WMI Namespace를 열거하고, 그 안에 정의된 클래스를 열거하는 방법 [5]
12450정성태12/13/202010154.NET Framework: 983. C# - TIME_WAIT과 ephemeral port 재사용파일 다운로드1
12449정성태12/11/202010568.NET Framework: 982. C# - HttpClient에서의 ephemeral port 재사용 [2]파일 다운로드1
12448정성태12/11/202012156.NET Framework: 981. C# - HttpWebRequest, WebClient와 ephemeral port 재사용파일 다운로드1
12447정성태12/10/202010306.NET Framework: 980. C# - CopyFileEx API 사용 예제 코드파일 다운로드1
12446정성태12/10/202010926.NET Framework: 979. C# - CoCreateInstanceEx 사용 예제 코드파일 다운로드1
12445정성태12/8/20208364오류 유형: 692. C# Marshal.PtrToStructure - The structure must not be a value class.파일 다운로드1
12444정성태12/8/20209172.NET Framework: 978. C# - GUID 타입 전용의 UnmanagedType.LPStruct [1]파일 다운로드1
12443정성태12/8/20208964.NET Framework: 977. C# PInvoke - C++의 매개변수에 대한 마샬링을 tlbexp.exe를 이용해 확인하는 방법
12442정성태12/4/20207926오류 유형: 691. Visual Studio - Build Events에 robocopy를 사용할때 "Invalid Parameter #1" 오류가 발행하는 경우
... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...