1 using System.Globalization;
3 namespace System.Globalization {
6 public class RegionInfo {
9 public RegionInfo (int culture) {
12 case 0x0401: // ar-SA Arabic (Saudi Arabia)
15 case 0x0801: // ar-IQ Arabic (Iraq)
18 case 0x0C01: // ar-EG Arabic (Egypt)
21 case 0x1001: // ar-LY Arabic (Libya)
24 case 0x1401: // ar-DZ Arabic (Algeria)
27 case 0x1801: // ar-MA Arabic (Morocco)
30 case 0x1C01: // ar-TN Arabic (Tunisia)
33 case 0x2001: // ar-OM Arabic (Oman)
36 case 0x2401: // ar-YE Arabic (Yemen)
39 case 0x2801: // ar-SY Arabic (Syria)
42 case 0x2C01: // ar-JO Arabic (Jordan)
45 case 0x3001: // ar-LB Arabic (Lebanon)
48 case 0x3401: // ar-KW Arabic (Kuwait)
51 case 0x3801: // ar-AE Arabic (U.A.E.)
54 case 0x3C01: // ar-BH Arabic (Bahrain)
57 case 0x4001: // ar-QA Arabic (Qatar)
60 case 0x0402: // bg-BG Bulgarian (Bulgaria)
63 case 0x0403: // ca-ES Catalan (Spain)
66 case 0x0404: // zh-TW Chinese (Taiwan)
69 case 0x0804: // zh-CN Chinese (People's Republic of China)
72 case 0x0C04: // zh-HK Chinese (Hong Kong S.A.R.)
75 case 0x1004: // zh-SG Chinese (Singapore)
78 case 0x1404: // zh-MO Chinese (Macau S.A.R.)
81 case 0x0405: // cs-CZ Czech (Czech Republic)
84 case 0x0406: // da-DK Danish (Denmark)
87 case 0x0407: // de-DE German (Germany)
90 case 0x0807: // de-CH German (Switzerland)
93 case 0x0C07: // de-AT German (Austria)
96 case 0x1007: // de-LU German (Luxembourg)
99 case 0x1407: // de-LI German (Liechtenstein)
102 case 0x0408: // el-GR Greek (Greece)
105 case 0x0409: // en-US English (United States)
108 case 0x0809: // en-GB English (United Kingdom)
111 case 0x0C09: // en-AU English (Australia)
114 case 0x1009: // en-CA English (Canada)
117 case 0x1409: // en-NZ English (New Zealand)
120 case 0x1809: // en-IE English (Ireland)
123 case 0x1C09: // en-ZA English (South Africa)
126 case 0x2009: // en-JM English (Jamaica)
129 case 0x2809: // en-BZ English (Belize)
132 case 0x2C09: // en-TT English (Trinidad and Tobago)
135 case 0x3009: // en-ZW English (Zimbabwe)
138 case 0x3409: // en-PH English (Republic of the Philippines)
141 case 0x080A: // es-MX Spanish (Mexico)
144 case 0x0C0A: // es-ES Spanish (Spain)
147 case 0x100A: // es-GT Spanish (Guatemala)
150 case 0x140A: // es-CR Spanish (Costa Rica)
153 case 0x180A: // es-PA Spanish (Panama)
156 case 0x1C0A: // es-DO Spanish (Dominican Republic)
159 case 0x200A: // es-VE Spanish (Venezuela)
162 case 0x240A: // es-CO Spanish (Colombia)
165 case 0x280A: // es-PE Spanish (Peru)
168 case 0x2C0A: // es-AR Spanish (Argentina)
171 case 0x300A: // es-EC Spanish (Ecuador)
174 case 0x340A: // es-CL Spanish (Chile)
177 case 0x380A: // es-UY Spanish (Uruguay)
180 case 0x3C0A: // es-PY Spanish (Paraguay)
183 case 0x400A: // es-BO Spanish (Bolivia)
186 case 0x440A: // es-SV Spanish (El Salvador)
189 case 0x480A: // es-HN Spanish (Honduras)
192 case 0x4C0A: // es-NI Spanish (Nicaragua)
195 case 0x500A: // es-PR Spanish (Puerto Rico)
198 case 0x040B: // fi-FI Finnish (Finland)
201 case 0x040C: // fr-FR French (France)
204 case 0x080C: // fr-BE French (Belgium)
207 case 0x0C0C: // fr-CA French (Canada)
210 case 0x100C: // fr-CH French (Switzerland)
213 case 0x140C: // fr-LU French (Luxembourg)
216 case 0x180C: // fr-MC French (Principality of Monaco)
219 case 0x040D: // he-IL Hebrew (Israel)
222 case 0x040E: // hu-HU Hungarian (Hungary)
225 case 0x040F: // is-IS Icelandic (Iceland)
228 case 0x0410: // it-IT Italian (Italy)
231 case 0x0810: // it-CH Italian (Switzerland)
234 case 0x0411: // ja-JP Japanese (Japan)
237 case 0x0412: // ko-KR Korean (Korea)
240 case 0x0413: // nl-NL Dutch (Netherlands)
243 case 0x0813: // nl-BE Dutch (Belgium)
246 case 0x0414: // nb-NO Norwegian (Bokm
\86l) (Norway)
249 case 0x0814: // nn-NO Norwegian (Nynorsk) (Norway)
252 case 0x0415: // pl-PL Polish (Poland)
255 case 0x0416: // pt-BR Portuguese (Brazil)
258 case 0x0816: // pt-PT Portuguese (Portugal)
261 case 0x0418: // ro-RO Romanian (Romania)
264 case 0x0419: // ru-RU Russian (Russia)
267 case 0x041A: // hr-HR Croatian (Croatia)
270 case 0x041B: // sk-SK Slovak (Slovakia)
273 case 0x041C: // sq-AL Albanian (Albania)
276 case 0x041D: // sv-SE Swedish (Sweden)
279 case 0x081D: // sv-FI Swedish (Finland)
282 case 0x041E: // th-TH Thai (Thailand)
285 case 0x041F: // tr-TR Turkish (Turkey)
288 case 0x0420: // ur-PK Urdu (Islamic Republic of Pakistan)
291 case 0x0421: // id-ID Indonesian (Indonesia)
294 case 0x0422: // uk-UA Ukrainian (Ukraine)
297 case 0x0423: // be-BY Belarusian (Belarus)
300 case 0x0424: // sl-SI Slovenian (Slovenia)
303 case 0x0425: // et-EE Estonian (Estonia)
306 case 0x0426: // lv-LV Latvian (Latvia)
309 case 0x0427: // lt-LT Lithuanian (Lithuania)
312 case 0x0429: // fa-IR Farsi (Iran)
315 case 0x042A: // vi-VN Vietnamese (Viet Nam)
318 case 0x042B: // hy-AM Armenian (Armenia)
321 case 0x042C: // Lt-az-AZ Azeri (Latin) (Azerbaijan)
324 case 0x082C: // Cy-az-AZ Azeri (Cyrillic) (Azerbaijan)
327 case 0x042D: // eu-ES Basque (Spain)
330 case 0x042F: // mk-MK FYRO Macedonian (Former Yugoslav Republic of Macedonia)
333 case 0x0436: // af-ZA Afrikaans (South Africa)
336 case 0x0437: // ka-GE Georgian (Georgia)
339 case 0x0438: // fo-FO Faeroese (Faeroe Islands)
342 case 0x0439: // hi-IN Hindi (India)
345 case 0x043E: // ms-MY Malay (Malaysia)
348 case 0x083E: // ms-BN Malay (Brunei Darussalam)
351 case 0x043F: // kk-KZ Kazakh (Kazakhstan)
354 case 0x0440: // ky-KZ Kyrgyz (Kyrgyzstan)
357 case 0x0441: // sw-KE Swahili (Kenya)
360 case 0x0443: // Lt-uz-UZ Uzbek (Latin) (Uzbekistan)
363 case 0x0843: // Cy-uz-UZ Uzbek (Cyrillic) (Uzbekistan)
366 case 0x0446: // pa-IN Punjabi (India)
369 case 0x0447: // gu-IN Gujarati (India)
372 case 0x0449: // ta-IN Tamil (India)
375 case 0x044A: // te-IN Telugu (India)
378 case 0x044B: // kn-IN Kannada (India)
381 case 0x044E: // mr-IN Marathi (India)
384 case 0x044F: // sa-IN Sanskrit (India)
387 case 0x0450: // mn-MN Mongolian (Mongolia)
390 case 0x0456: // gl-ES Galician (Spain)
393 case 0x0457: // kok-IN Konkani (India)
396 case 0x045A: // syr-SY Syriac (Syria)
399 case 0x0465: // div-MV Divehi (Maldives)
402 case 0x007F: // Invariant Language (Invariant Country)
403 throw new ArgumentException ("There is no region associated with the Invariant Culture (Culture ID: 0x7F).");
405 if (CultureInfo.IsIDNeutralCulture (culture))
406 throw new ArgumentException ("Culture ID " + culture
407 + " (0x" + culture.ToString ("X4")
408 + ") is a neutral culture. A region can not be created from it.");
410 throw new ArgumentException ("Culture ID " + culture + " (0x" + culture.ToString ("X4")
411 + ") is not a supported culture.");
415 public RegionInfo (string name) {
416 switch (name.ToUpperInvariant ()) {
417 case "AF": // Afghanistan
420 case "AL": // Albania
423 case "DZ": // Algeria
426 case "AS": // American Samoa
429 case "AD": // Andorra
435 case "AI": // Anguilla
438 case "AQ": // Antarctica
441 case "AG": // Antigua and Barbuda
444 case "AR": // Argentina
447 case "AM": // Armenia
453 case "AU": // Australia
456 case "AT": // Austria
459 case "AZ": // Azerbaijan
462 case "BS": // Bahamas
465 case "BH": // Bahrain
468 case "BD": // Bangladesh
471 case "BB": // Barbados
474 case "BY": // Belarus
477 case "BE": // Belgium
486 case "BM": // Bermuda
492 case "BO": // Bolivia
495 case "BA": // Bosnia and Herzegowina
498 case "BW": // Botswana
501 case "BV": // Bouvet Island
507 case "IO": // British Indian Ocean Territory
510 case "BN": // Brunei Darussalam
513 case "BG": // Bulgaria
516 case "BF": // Burkina Faso
519 case "BI": // Burundi
522 case "KH": // Cambodia
525 case "CM": // Cameroon
531 case "CV": // Cape Verde
534 case "KY": // Cayman Islands
537 case "CF": // Central African Republic
549 case "CX": // Christmas Island
552 case "CC": // Cocos (Keeling) Islands
555 case "CO": // Colombia
558 case "KM": // Comoros
564 case "CK": // Cook Islands
567 case "CR": // Costa Rica
570 case "CI": // Cote D'Ivoire
573 case "HR": // Croatia (Local Name: Hrvatska)
582 case "CZ": // Czech Republic
585 case "DK": // Denmark
588 case "DJ": // Djibouti
591 case "DM": // Dominica
594 case "DO": // Dominican Republic
597 case "TP": // East Timor
600 case "EC": // Ecuador
606 case "SV": // El Salvador
609 case "GQ": // Equatorial Guinea
612 case "ER": // Eritrea
615 case "EE": // Estonia
618 case "ET": // Ethiopia
621 case "FK": // Falkland Islands (Malvinas)
624 case "FO": // Faroe Islands
630 case "FI": // Finland
636 case "FX": // France, Metropolitan
639 case "GF": // French Guiana
642 case "PF": // French Polynesia
645 case "TF": // French Southern Territories
654 case "GE": // Georgia
657 case "DE": // Germany
663 case "GI": // Gibraltar
669 case "GL": // Greenland
672 case "GD": // Grenada
675 case "GP": // Guadeloupe
681 case "GT": // Guatemala
687 case "GW": // Guinea-Bissau
696 case "HM": // Heard and Mc Donald Islands
699 case "VA": // Holy See (Vatican City State)
702 case "HN": // Honduras
705 case "HK": // Hong Kong
708 case "HU": // Hungary
711 case "IS": // Iceland
717 case "ID": // Indonesia
720 case "IR": // Iran (Islamic Republic of)
726 case "IE": // Ireland
735 case "JM": // Jamaica
744 case "KZ": // Kazakhstan
750 case "KI": // Kiribati
753 case "KP": // Korea, Democratic People's Republic of
756 case "KR": // Korea, Republic of
762 case "KG": // Kyrgyzstan
765 case "LA": // Lao People's Democratic Republic
771 case "LB": // Lebanon
774 case "LS": // Lesotho
777 case "LR": // Liberia
780 case "LY": // Libyan Arab Jamahiriya
783 case "LI": // Liechtenstein
786 case "LT": // Lithuania
789 case "LU": // Luxembourg
795 case "MK": // Macedonia, The Former Yugoslav Republic of
798 case "MG": // Madagascar
804 case "MY": // Malaysia
807 case "MV": // Maldives
816 case "MH": // Marshall Islands
819 case "MQ": // Martinique
822 case "MR": // Mauritania
825 case "MU": // Mauritius
828 case "YT": // Mayotte
834 case "FM": // Micronesia, Federated States of
837 case "MD": // Moldova, Republic of
843 case "MN": // Mongolia
846 case "MS": // Montserrat
849 case "MA": // Morocco
852 case "MZ": // Mozambique
855 case "MM": // Myanmar
858 case "NA": // Namibia
867 case "NL": // Netherlands
870 case "AN": // Netherlands Antilles
873 case "NC": // New Caledonia
876 case "NZ": // New Zealand
879 case "NI": // Nicaragua
885 case "NG": // Nigeria
891 case "NF": // Norfolk Island
894 case "MP": // Northern Mariana Islands
903 case "PK": // Pakistan
912 case "PG": // Papua New Guinea
915 case "PY": // Paraguay
921 case "PH": // Philippines
924 case "PN": // Pitcairn
930 case "PT": // Portugal
933 case "PR": // Puerto Rico
939 case "RE": // Reunion
942 case "RO": // Romania
945 case "RU": // Russian Federation
951 case "KN": // Saint Kitts and Nevis
954 case "LC": // Saint Lucia
957 case "VC": // Saint Vincent and The Grenadines
963 case "SM": // San Marino
966 case "ST": // Sao Tome and Principe
969 case "SA": // Saudi Arabia
972 case "SN": // Senegal
975 case "SC": // Seychelles
978 case "SL": // Sierra Leone
981 case "SG": // Singapore
984 case "SK": // Slovakia (Slovak Republic)
987 case "SI": // Slovenia
990 case "SB": // Solomon Islands
993 case "SO": // Somalia
996 case "ZA": // South Africa
999 case "GS": // South Georgia and The South Sandwich Islands
1005 case "LK": // Sri Lanka
1008 case "SH": // St. Helena
1011 case "PM": // St. Pierre and Miquelon
1017 case "SR": // Suriname
1020 case "SJ": // Svalbard and Jan Mayen Islands
1023 case "SZ": // Swaziland
1026 case "SE": // Sweden
1029 case "CH": // Switzerland
1032 case "SY": // Syrian Arab Republic
1035 case "TW": // Taiwan, Province of China
1038 case "TJ": // Tajikistan
1041 case "TZ": // Tanzania, United Republic of
1044 case "TH": // Thailand
1050 case "TK": // Tokelau
1056 case "TT": // Trinidad and Tobago
1059 case "TN": // Tunisia
1062 case "TR": // Turkey
1065 case "TM": // Turkmenistan
1068 case "TC": // Turks and Caicos Islands
1071 case "TV": // Tuvalu
1074 case "UG": // Uganda
1077 case "UA": // Ukraine
1080 case "AE": // United Arab Emirates
1083 case "GB": // United Kingdom
1086 case "US": // United States
1089 case "UM": // United States Minor Outlying Islands
1092 case "UY": // Uruguay
1095 case "UZ": // Uzbekistan
1098 case "VU": // Vanuatu
1101 case "VE": // Venezuela
1104 case "VN": // Viet Nam
1107 case "VG": // Virgin Islands (British)
1110 case "VI": // Virgin Islands (U.S.)
1113 case "WF": // Wallis and Futuna Islands
1116 case "EH": // Western Sahara
1122 case "YU": // Yugoslavia
1128 case "ZM": // Zambia
1131 case "ZW": // Zimbabwe
1135 throw new ArgumentException ("Region name " + name + " is not supported.");
1139 public virtual string CurrencySymbol {
1143 throw new Exception ("Dunno what is currency symbol for " + NLS_id + " Region. FIXME.");
1149 public static RegionInfo CurrentRegion {
1155 public virtual string DisplayName {
1158 case 203: // Czech republic
1159 return "Èeská republika";
1160 case 840: // United States
1161 return "United States";
1163 throw new Exception ("FIXME. Please add your region name in language used in this region.");
1168 public virtual string EnglishName {
1172 return "Afghanistan";
1178 return "American Samoa";
1186 return "Antarctica";
1188 return "Antigua and Barbuda";
1200 return "Azerbaijan";
1206 return "Bangladesh";
1224 return "Bosnia and Herzegowina";
1228 return "Bouvet Island";
1232 return "British Indian Ocean Territory";
1234 return "Brunei Darussalam";
1238 return "Burkina Faso";
1248 return "Cape Verde";
1250 return "Cayman Islands";
1252 return "Central African Republic";
1260 return "Christmas Island";
1262 return "Cocos (Keeling) Islands";
1270 return "Cook Islands";
1272 return "Costa Rica";
1274 return "Cote D'Ivoire";
1276 return "Croatia (Local Name: Hrvatska)";
1282 return "Czech Republic";
1290 return "Dominican Republic";
1292 return "East Timor";
1298 return "El Salvador";
1300 return "Equatorial Guinea";
1308 return "Falkland Islands (Malvinas)";
1310 return "Faroe Islands";
1318 return "France, Metropolitan";
1320 return "French Guiana";
1322 return "French Polynesia";
1324 return "French Southern Territories";
1344 return "Guadeloupe";
1352 return "Guinea-Bissau";
1358 return "Heard and Mc Donald Islands";
1360 return "Holy See (Vatican City State)";
1374 return "Iran (Islamic Republic of)";
1390 return "Kazakhstan";
1396 return "Korea, Democratic People's Republic of";
1398 return "Korea, Republic of";
1402 return "Kyrgyzstan";
1404 return "Lao People's Democratic Republic";
1414 return "Libyan Arab Jamahiriya";
1416 return "Liechtenstein";
1420 return "Luxembourg";
1424 return "Macedonia, The Former Yugoslav Republic of";
1426 return "Madagascar";
1438 return "Marshall Islands";
1440 return "Martinique";
1442 return "Mauritania";
1450 return "Micronesia, Federated States of";
1452 return "Moldova, Republic of";
1458 return "Montserrat";
1462 return "Mozambique";
1472 return "Netherlands";
1474 return "Netherlands Antilles";
1476 return "New Caledonia";
1478 return "New Zealand";
1488 return "Norfolk Island";
1490 return "Northern Mariana Islands";
1502 return "Papua New Guinea";
1508 return "Philippines";
1516 return "Puerto Rico";
1524 return "Russian Federation";
1528 return "Saint Kitts and Nevis";
1530 return "Saint Lucia";
1532 return "Saint Vincent and The Grenadines";
1536 return "San Marino";
1538 return "Sao Tome and Principe";
1540 return "Saudi Arabia";
1544 return "Seychelles";
1546 return "Sierra Leone";
1550 return "Slovakia (Slovak Republic)";
1554 return "Solomon Islands";
1558 return "South Africa";
1560 return "South Georgia and The South Sandwich Islands";
1566 return "St. Helena";
1568 return "St. Pierre and Miquelon";
1574 return "Svalbard and Jan Mayen Islands";
1580 return "Switzerland";
1582 return "Syrian Arab Republic";
1584 return "Taiwan, Province of China";
1586 return "Tajikistan";
1588 return "Tanzania, United Republic of";
1598 return "Trinidad and Tobago";
1604 return "Turkmenistan";
1606 return "Turks and Caicos Islands";
1614 return "United Arab Emirates";
1616 return "United Kingdom";
1618 return "United States";
1620 return "United States Minor Outlying Islands";
1624 return "Uzbekistan";
1632 return "Virgin Islands (British)";
1634 return "Virgin Islands (U.S.)";
1636 return "Wallis and Futuna Islands";
1638 return "Western Sahara";
1642 return "Yugoslavia";
1650 throw new Exception ("This code should not be reached.");
1655 public virtual bool IsMetric {
1658 case 203: // Czech Republic
1660 case 840: // United States
1663 throw new Exception ("FIXME. Please define.");
1668 public virtual string ISOCurrencySymbol {
1672 throw new Exception ("This code should not be reached.");
1678 public virtual string Name
1681 throw new NotImplementedException();
1686 public virtual string ThreeLetterISORegionName
1689 throw new NotImplementedException();
1694 public virtual string ThreeLetterWindowsRegionName
1697 throw new NotImplementedException();
1702 public virtual string TwoLetterISORegionName
1705 throw new NotImplementedException();
1712 public override bool Equals(object value) {
1713 return value == this;
1716 public override int GetHashCode () {
1717 return NLS_id.GetHashCode ();
1721 public override string ToString()
1723 throw new NotImplementedException();