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개는 현재 사용하지 않는다고 하는데,
- FrameworkCultures
- 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)라는 점에는 변함이 없습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]