2005-08-12 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / corlib / System.Globalization / RegionInfo.cs
1
2 //
3 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining
6 // a copy of this software and associated documentation files (the
7 // "Software"), to deal in the Software without restriction, including
8 // without limitation the rights to use, copy, modify, merge, publish,
9 // distribute, sublicense, and/or sell copies of the Software, and to
10 // permit persons to whom the Software is furnished to do so, subject to
11 // the following conditions:
12 // 
13 // The above copyright notice and this permission notice shall be
14 // included in all copies or substantial portions of the Software.
15 // 
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 //
24 using System.Globalization;
25
26 namespace System.Globalization {
27
28         [Serializable]
29         [MonoTODO ("This class should be implemented from scratch.")]
30         public class RegionInfo {
31                 int NLS_id;
32
33                 static object forLock = new object ();
34
35                 static RegionInfo currentRegion;
36
37                 public RegionInfo (int culture) {
38                         
39                         switch (culture) {
40                         case 0x0401: // ar-SA Arabic (Saudi Arabia)
41                                 NLS_id = 682;
42                                 break;
43                         case 0x0801: // ar-IQ Arabic (Iraq)
44                                 NLS_id = 368;
45                                 break;
46                         case 0x0C01: // ar-EG Arabic (Egypt)
47                                 NLS_id = 818;
48                                 break;
49                         case 0x1001: // ar-LY Arabic (Libya)
50                                 NLS_id = 434;
51                                 break;
52                         case 0x1401: // ar-DZ Arabic (Algeria)
53                                 NLS_id = 12;
54                                 break;
55                         case 0x1801: // ar-MA Arabic (Morocco)
56                                 NLS_id = 504;
57                                 break;
58                         case 0x1C01: // ar-TN Arabic (Tunisia)
59                                 NLS_id = 788;
60                                 break;
61                         case 0x2001: // ar-OM Arabic (Oman)
62                                 NLS_id = 512;
63                                 break;
64                         case 0x2401: // ar-YE Arabic (Yemen)
65                                 NLS_id = 887;
66                                 break;
67                         case 0x2801: // ar-SY Arabic (Syria)
68                                 NLS_id = 760;
69                                 break;
70                         case 0x2C01: // ar-JO Arabic (Jordan)
71                                 NLS_id = 400;
72                                 break;
73                         case 0x3001: // ar-LB Arabic (Lebanon)
74                                 NLS_id = 422;
75                                 break;
76                         case 0x3401: // ar-KW Arabic (Kuwait)
77                                 NLS_id = 414;
78                                 break;
79                         case 0x3801: // ar-AE Arabic (U.A.E.)
80                                 NLS_id = 784;
81                                 break;
82                         case 0x3C01: // ar-BH Arabic (Bahrain)
83                                 NLS_id = 48;
84                                 break;
85                         case 0x4001: // ar-QA Arabic (Qatar)
86                                 NLS_id = 634;
87                                 break;
88                         case 0x0402: // bg-BG Bulgarian (Bulgaria)
89                                 NLS_id = 100;
90                                 break;
91                         case 0x0403: // ca-ES Catalan (Spain)
92                                 NLS_id = 724;
93                                 break;
94                         case 0x0404: // zh-TW Chinese (Taiwan)
95                                 NLS_id = 158;
96                                 break;
97                         case 0x0804: // zh-CN Chinese (People's Republic of China)
98                                 NLS_id = 156;
99                                 break;
100                         case 0x0C04: // zh-HK Chinese (Hong Kong S.A.R.)
101                                 NLS_id = 344;
102                                 break;
103                         case 0x1004: // zh-SG Chinese (Singapore)
104                                 NLS_id = 702;
105                                 break;
106                         case 0x1404: // zh-MO Chinese (Macau S.A.R.)
107                                 NLS_id = 446;
108                                 break;
109                         case 0x0405: // cs-CZ Czech (Czech Republic)
110                                 NLS_id = 203;
111                                 break;
112                         case 0x0406: // da-DK Danish (Denmark)
113                                 NLS_id = 208;
114                                 break;
115                         case 0x0407: // de-DE German (Germany)
116                                 NLS_id = 276;
117                                 break;
118                         case 0x0807: // de-CH German (Switzerland)
119                                 NLS_id = 756;
120                                 break;
121                         case 0x0C07: // de-AT German (Austria)
122                                 NLS_id = 40;
123                                 break;
124                         case 0x1007: // de-LU German (Luxembourg)
125                                 NLS_id = 442;
126                                 break;
127                         case 0x1407: // de-LI German (Liechtenstein)
128                                 NLS_id = 438;
129                                 break;
130                         case 0x0408: // el-GR Greek (Greece)
131                                 NLS_id = 300;
132                                 break;
133                         case 0x0409: // en-US English (United States)
134                                 NLS_id = 840;
135                                 break;
136                         case 0x0809: // en-GB English (United Kingdom)
137                                 NLS_id = 826;
138                                 break;
139                         case 0x0C09: // en-AU English (Australia)
140                                 NLS_id = 36;
141                                 break;
142                         case 0x1009: // en-CA English (Canada)
143                                 NLS_id = 124;
144                                 break;
145                         case 0x1409: // en-NZ English (New Zealand)
146                                 NLS_id = 554;
147                                 break;
148                         case 0x1809: // en-IE English (Ireland)
149                                 NLS_id = 372;
150                                 break;
151                         case 0x1C09: // en-ZA English (South Africa)
152                                 NLS_id = 710;
153                                 break;
154                         case 0x2009: // en-JM English (Jamaica)
155                                 NLS_id = 388;
156                                 break;
157                         case 0x2809: // en-BZ English (Belize)
158                                 NLS_id = 84;
159                                 break;
160                         case 0x2C09: // en-TT English (Trinidad and Tobago)
161                                 NLS_id = 780;
162                                 break;
163                         case 0x3009: // en-ZW English (Zimbabwe)
164                                 NLS_id = 716;
165                                 break;
166                         case 0x3409: // en-PH English (Republic of the Philippines)
167                                 NLS_id = 608;
168                                 break;
169                         case 0x080A: // es-MX Spanish (Mexico)
170                                 NLS_id = 484;
171                                 break;
172                         case 0x0C0A: // es-ES Spanish (Spain)
173                                 NLS_id = 724;
174                                 break;
175                         case 0x100A: // es-GT Spanish (Guatemala)
176                                 NLS_id = 320;
177                                 break;
178                         case 0x140A: // es-CR Spanish (Costa Rica)
179                                 NLS_id = 188;
180                                 break;
181                         case 0x180A: // es-PA Spanish (Panama)
182                                 NLS_id = 591;
183                                 break;
184                         case 0x1C0A: // es-DO Spanish (Dominican Republic)
185                                 NLS_id = 214;
186                                 break;
187                         case 0x200A: // es-VE Spanish (Venezuela)
188                                 NLS_id = 862;
189                                 break;
190                         case 0x240A: // es-CO Spanish (Colombia)
191                                 NLS_id = 170;
192                                 break;
193                         case 0x280A: // es-PE Spanish (Peru)
194                                 NLS_id = 604;
195                                 break;
196                         case 0x2C0A: // es-AR Spanish (Argentina)
197                                 NLS_id = 32;
198                                 break;
199                         case 0x300A: // es-EC Spanish (Ecuador)
200                                 NLS_id = 218;
201                                 break;
202                         case 0x340A: // es-CL Spanish (Chile)
203                                 NLS_id = 152;
204                                 break;
205                         case 0x380A: // es-UY Spanish (Uruguay)
206                                 NLS_id = 858;
207                                 break;
208                         case 0x3C0A: // es-PY Spanish (Paraguay)
209                                 NLS_id = 600;
210                                 break;
211                         case 0x400A: // es-BO Spanish (Bolivia)
212                                 NLS_id = 68;
213                                 break;
214                         case 0x440A: // es-SV Spanish (El Salvador)
215                                 NLS_id = 222;
216                                 break;
217                         case 0x480A: // es-HN Spanish (Honduras)
218                                 NLS_id = 340;
219                                 break;
220                         case 0x4C0A: // es-NI Spanish (Nicaragua)
221                                 NLS_id = 558;
222                                 break;
223                         case 0x500A: // es-PR Spanish (Puerto Rico)
224                                 NLS_id = 630;
225                                 break;
226                         case 0x040B: // fi-FI Finnish (Finland)
227                                 NLS_id = 246;
228                                 break;
229                         case 0x040C: // fr-FR French (France)
230                                 NLS_id = 250;
231                                 break;
232                         case 0x080C: // fr-BE French (Belgium)
233                                 NLS_id = 56;
234                                 break;
235                         case 0x0C0C: // fr-CA French (Canada)
236                                 NLS_id = 124;
237                                 break;
238                         case 0x100C: // fr-CH French (Switzerland)
239                                 NLS_id = 756;
240                                 break;
241                         case 0x140C: // fr-LU French (Luxembourg)
242                                 NLS_id = 442;
243                                 break;
244                         case 0x180C: // fr-MC French (Principality of Monaco)
245                                 NLS_id = 492;
246                                 break;
247                         case 0x040D: // he-IL Hebrew (Israel)
248                                 NLS_id = 376;
249                                 break;
250                         case 0x040E: // hu-HU Hungarian (Hungary)
251                                 NLS_id = 348;
252                                 break;
253                         case 0x040F: // is-IS Icelandic (Iceland)
254                                 NLS_id = 352;
255                                 break;
256                         case 0x0410: // it-IT Italian (Italy)
257                                 NLS_id = 380;
258                                 break;
259                         case 0x0810: // it-CH Italian (Switzerland)
260                                 NLS_id = 756;
261                                 break;
262                         case 0x0411: // ja-JP Japanese (Japan)
263                                 NLS_id = 392;
264                                 break;
265                         case 0x0412: // ko-KR Korean (Korea)
266                                 NLS_id = 410;
267                                 break;
268                         case 0x0413: // nl-NL Dutch (Netherlands)
269                                 NLS_id = 528;
270                                 break;
271                         case 0x0813: // nl-BE Dutch (Belgium)
272                                 NLS_id = 56;
273                                 break;
274                         case 0x0414: // nb-NO Norwegian (Bokm\86l) (Norway)
275                                 NLS_id = 578;
276                                 break;
277                         case 0x0814: // nn-NO Norwegian (Nynorsk) (Norway)
278                                 NLS_id = 578;
279                                 break;
280                         case 0x0415: // pl-PL Polish (Poland)
281                                 NLS_id = 616;
282                                 break;
283                         case 0x0416: // pt-BR Portuguese (Brazil)
284                                 NLS_id = 76;
285                                 break;
286                         case 0x0816: // pt-PT Portuguese (Portugal)
287                                 NLS_id = 620;
288                                 break;
289                         case 0x0418: // ro-RO Romanian (Romania)
290                                 NLS_id = 642;
291                                 break;
292                         case 0x0419: // ru-RU Russian (Russia)
293                                 NLS_id = 643;
294                                 break;
295                         case 0x041A: // hr-HR Croatian (Croatia)
296                                 NLS_id = 191;
297                                 break;
298                         case 0x041B: // sk-SK Slovak (Slovakia)
299                                 NLS_id = 703;
300                                 break;
301                         case 0x041C: // sq-AL Albanian (Albania)
302                                 NLS_id = 8;
303                                 break;
304                         case 0x041D: // sv-SE Swedish (Sweden)
305                                 NLS_id = 752;
306                                 break;
307                         case 0x081D: // sv-FI Swedish (Finland)
308                                 NLS_id = 246;
309                                 break;
310                         case 0x041E: // th-TH Thai (Thailand)
311                                 NLS_id = 764;
312                                 break;
313                         case 0x041F: // tr-TR Turkish (Turkey)
314                                 NLS_id = 792;
315                                 break;
316                         case 0x0420: // ur-PK Urdu (Islamic Republic of Pakistan)
317                                 NLS_id = 586;
318                                 break;
319                         case 0x0421: // id-ID Indonesian (Indonesia)
320                                 NLS_id = 360;
321                                 break;
322                         case 0x0422: // uk-UA Ukrainian (Ukraine)
323                                 NLS_id = 804;
324                                 break;
325                         case 0x0423: // be-BY Belarusian (Belarus)
326                                 NLS_id = 112;
327                                 break;
328                         case 0x0424: // sl-SI Slovenian (Slovenia)
329                                 NLS_id = 705;
330                                 break;
331                         case 0x0425: // et-EE Estonian (Estonia)
332                                 NLS_id = 233;
333                                 break;
334                         case 0x0426: // lv-LV Latvian (Latvia)
335                                 NLS_id = 428;
336                                 break;
337                         case 0x0427: // lt-LT Lithuanian (Lithuania)
338                                 NLS_id = 440;
339                                 break;
340                         case 0x0429: // fa-IR Farsi (Iran)
341                                 NLS_id = 364;
342                                 break;
343                         case 0x042A: // vi-VN Vietnamese (Viet Nam)
344                                 NLS_id = 704;
345                                 break;
346                         case 0x042B: // hy-AM Armenian (Armenia)
347                                 NLS_id = 51;
348                                 break;
349                         case 0x042C: // Lt-az-AZ Azeri (Latin) (Azerbaijan)
350                                 NLS_id = 31;
351                                 break;
352                         case 0x082C: // Cy-az-AZ Azeri (Cyrillic) (Azerbaijan)
353                                 NLS_id = 31;
354                                 break;
355                         case 0x042D: // eu-ES Basque (Spain)
356                                 NLS_id = 724;
357                                 break;
358                         case 0x042F: // mk-MK FYRO Macedonian (Former Yugoslav Republic of Macedonia)
359                                 NLS_id = 807;
360                                 break;
361                         case 0x0436: // af-ZA Afrikaans (South Africa)
362                                 NLS_id = 710;
363                                 break;
364                         case 0x0437: // ka-GE Georgian (Georgia)
365                                 NLS_id = 268;
366                                 break;
367                         case 0x0438: // fo-FO Faeroese (Faeroe Islands)
368                                 NLS_id = 234;
369                                 break;
370                         case 0x0439: // hi-IN Hindi (India)
371                                 NLS_id = 356;
372                                 break;
373                         case 0x043E: // ms-MY Malay (Malaysia)
374                                 NLS_id = 458;
375                                 break;
376                         case 0x083E: // ms-BN Malay (Brunei Darussalam)
377                                 NLS_id = 96;
378                                 break;
379                         case 0x043F: // kk-KZ Kazakh (Kazakhstan)
380                                 NLS_id = 398;
381                                 break;
382                         case 0x0440: // ky-KZ Kyrgyz (Kyrgyzstan)
383                                 NLS_id = 398;
384                                 break;
385                         case 0x0441: // sw-KE Swahili (Kenya)
386                                 NLS_id = 404;
387                                 break;
388                         case 0x0443: // Lt-uz-UZ Uzbek (Latin) (Uzbekistan)
389                                 NLS_id = 860;
390                                 break;
391                         case 0x0843: // Cy-uz-UZ Uzbek (Cyrillic) (Uzbekistan)
392                                 NLS_id = 860;
393                                 break;
394                         case 0x0446: // pa-IN Punjabi (India)
395                                 NLS_id = 356;
396                                 break;
397                         case 0x0447: // gu-IN Gujarati (India)
398                                 NLS_id = 356;
399                                 break;
400                         case 0x0449: // ta-IN Tamil (India)
401                                 NLS_id = 356;
402                                 break;
403                         case 0x044A: // te-IN Telugu (India)
404                                 NLS_id = 356;
405                                 break;
406                         case 0x044B: // kn-IN Kannada (India)
407                                 NLS_id = 356;
408                                 break;
409                         case 0x044E: // mr-IN Marathi (India)
410                                 NLS_id = 356;
411                                 break;
412                         case 0x044F: // sa-IN Sanskrit (India)
413                                 NLS_id = 356;
414                                 break;
415                         case 0x0450: // mn-MN Mongolian (Mongolia)
416                                 NLS_id = 496;
417                                 break;
418                         case 0x0456: // gl-ES Galician (Spain)
419                                 NLS_id = 724;
420                                 break;
421                         case 0x0457: // kok-IN Konkani (India)
422                                 NLS_id = 356;
423                                 break;
424                         case 0x045A: // syr-SY Syriac (Syria)
425                                 NLS_id = 760;
426                                 break;
427                         case 0x0465: // div-MV Divehi (Maldives)
428                                 NLS_id = 462;
429                                 break;
430                         case 0x007F: //  Invariant Language (Invariant Country)
431                                 throw new ArgumentException ("There is no region associated with the Invariant Culture (Culture ID: 0x7F).");
432                         default:
433                                 if (CultureInfo.IsIDNeutralCulture (culture))
434                                         throw new ArgumentException ("Culture ID " + culture
435                                                          + " (0x" + culture.ToString ("X4")
436                                                          + ") is a neutral culture. A region can not be created from it.");
437
438                                 throw new ArgumentException ("Culture ID " + culture + " (0x" + culture.ToString ("X4")
439                                                          + ") is not a supported culture.");
440                         }
441                 }
442
443                 public RegionInfo (string name) {
444                         switch (name.ToUpperInvariant ()) {
445                         case "AF": // Afghanistan
446                                 NLS_id = 004;
447                                 break;
448                         case "AL": // Albania
449                                 NLS_id = 008;
450                                 break;
451                         case "DZ": // Algeria
452                                 NLS_id = 012;
453                                 break;
454                         case "AS": // American Samoa
455                                 NLS_id = 016;
456                                 break;
457                         case "AD": // Andorra
458                                 NLS_id = 020;
459                                 break;
460                         case "AO": // Angola
461                                 NLS_id = 024;
462                                 break;
463                         case "AI": // Anguilla
464                                 NLS_id = 660;
465                                 break;
466                         case "AQ": // Antarctica
467                                 NLS_id = 010;
468                                 break;
469                         case "AG": // Antigua and Barbuda
470                                 NLS_id = 028;
471                                 break;
472                         case "AR": // Argentina
473                                 NLS_id = 032;
474                                 break;
475                         case "AM": // Armenia
476                                 NLS_id = 051;
477                                 break;
478                         case "AW": // Aruba
479                                 NLS_id = 533;
480                                 break;
481                         case "AU": // Australia
482                                 NLS_id = 036;
483                                 break;
484                         case "AT": // Austria
485                                 NLS_id = 040;
486                                 break;
487                         case "AZ": // Azerbaijan
488                                 NLS_id = 031;
489                                 break;
490                         case "BS": // Bahamas
491                                 NLS_id = 044;
492                                 break;
493                         case "BH": // Bahrain
494                                 NLS_id = 048;
495                                 break;
496                         case "BD": // Bangladesh
497                                 NLS_id = 050;
498                                 break;
499                         case "BB": // Barbados
500                                 NLS_id = 052;
501                                 break;
502                         case "BY": // Belarus
503                                 NLS_id = 112;
504                                 break;
505                         case "BE": // Belgium
506                                 NLS_id = 056;
507                                 break;
508                         case "BZ": // Belize
509                                 NLS_id = 084;
510                                 break;
511                         case "BJ": // Benin
512                                 NLS_id = 204;
513                                 break;
514                         case "BM": // Bermuda
515                                 NLS_id = 060;
516                                 break;
517                         case "BT": // Bhutan
518                                 NLS_id = 064;
519                                 break;
520                         case "BO": // Bolivia
521                                 NLS_id = 068;
522                                 break;
523                         case "BA": // Bosnia and Herzegowina
524                                 NLS_id = 070;
525                                 break;
526                         case "BW": // Botswana
527                                 NLS_id = 072;
528                                 break;
529                         case "BV": // Bouvet Island
530                                 NLS_id = 074;
531                                 break;
532                         case "BR": // Brazil
533                                 NLS_id = 076;
534                                 break;
535                         case "IO": // British Indian Ocean Territory
536                                 NLS_id = 086;
537                                 break;
538                         case "BN": // Brunei Darussalam
539                                 NLS_id = 096;
540                                 break;
541                         case "BG": // Bulgaria
542                                 NLS_id = 100;
543                                 break;
544                         case "BF": // Burkina Faso
545                                 NLS_id = 854;
546                                 break;
547                         case "BI": // Burundi
548                                 NLS_id = 108;
549                                 break;
550                         case "KH": // Cambodia
551                                 NLS_id = 116;
552                                 break;
553                         case "CM": // Cameroon
554                                 NLS_id = 120;
555                                 break;
556                         case "CA": // Canada
557                                 NLS_id = 124;
558                                 break;
559                         case "CV": // Cape Verde
560                                 NLS_id = 132;
561                                 break;
562                         case "KY": // Cayman Islands
563                                 NLS_id = 136;
564                                 break;
565                         case "CF": // Central African Republic
566                                 NLS_id = 140;
567                                 break;
568                         case "TD": // Chad
569                                 NLS_id = 148;
570                                 break;
571                         case "CL": // Chile
572                                 NLS_id = 152;
573                                 break;
574                         case "CN": // China
575                                 NLS_id = 156;
576                                 break;
577                         case "CX": // Christmas Island
578                                 NLS_id = 162;
579                                 break;
580                         case "CC": // Cocos (Keeling) Islands
581                                 NLS_id = 166;
582                                 break;
583                         case "CO": // Colombia
584                                 NLS_id = 170;
585                                 break;
586                         case "KM": // Comoros
587                                 NLS_id = 174;
588                                 break;
589                         case "CG": // Congo
590                                 NLS_id = 178;
591                                 break;
592                         case "CK": // Cook Islands
593                                 NLS_id = 184;
594                                 break;
595                         case "CR": // Costa Rica
596                                 NLS_id = 188;
597                                 break;
598                         case "CI": // Cote D'Ivoire
599                                 NLS_id = 384;
600                                 break;
601                         case "HR": // Croatia (Local Name: Hrvatska)
602                                 NLS_id = 191;
603                                 break;
604                         case "CU": // Cuba
605                                 NLS_id = 192;
606                                 break;
607                         case "CY": // Cyprus
608                                 NLS_id = 196;
609                                 break;
610                         case "CZ": // Czech Republic
611                                 NLS_id = 203;
612                                 break;
613                         case "DK": // Denmark
614                                 NLS_id = 208;
615                                 break;
616                         case "DJ": // Djibouti
617                                 NLS_id = 262;
618                                 break;
619                         case "DM": // Dominica
620                                 NLS_id = 212;
621                                 break;
622                         case "DO": // Dominican Republic
623                                 NLS_id = 214;
624                                 break;
625                         case "TP": // East Timor
626                                 NLS_id = 626;
627                                 break;
628                         case "EC": // Ecuador
629                                 NLS_id = 218;
630                                 break;
631                         case "EG": // Egypt
632                                 NLS_id = 818;
633                                 break;
634                         case "SV": // El Salvador
635                                 NLS_id = 222;
636                                 break;
637                         case "GQ": // Equatorial Guinea
638                                 NLS_id = 226;
639                                 break;
640                         case "ER": // Eritrea
641                                 NLS_id = 232;
642                                 break;
643                         case "EE": // Estonia
644                                 NLS_id = 233;
645                                 break;
646                         case "ET": // Ethiopia
647                                 NLS_id = 231;
648                                 break;
649                         case "FK": // Falkland Islands (Malvinas)
650                                 NLS_id = 238;
651                                 break;
652                         case "FO": // Faroe Islands
653                                 NLS_id = 234;
654                                 break;
655                         case "FJ": // Fiji
656                                 NLS_id = 242;
657                                 break;
658                         case "FI": // Finland
659                                 NLS_id = 246;
660                                 break;
661                         case "FR": // France
662                                 NLS_id = 250;
663                                 break;
664                         case "FX": // France, Metropolitan
665                                 NLS_id = 249;
666                                 break;
667                         case "GF": // French Guiana
668                                 NLS_id = 254;
669                                 break;
670                         case "PF": // French Polynesia
671                                 NLS_id = 258;
672                                 break;
673                         case "TF": // French Southern Territories
674                                 NLS_id = 260;
675                                 break;
676                         case "GA": // Gabon
677                                 NLS_id = 266;
678                                 break;
679                         case "GM": // Gambia
680                                 NLS_id = 270;
681                                 break;
682                         case "GE": // Georgia
683                                 NLS_id = 268;
684                                 break;
685                         case "DE": // Germany
686                                 NLS_id = 276;
687                                 break;
688                         case "GH": // Ghana
689                                 NLS_id = 288;
690                                 break;
691                         case "GI": // Gibraltar
692                                 NLS_id = 292;
693                                 break;
694                         case "GR": // Greece
695                                 NLS_id = 300;
696                                 break;
697                         case "GL": // Greenland
698                                 NLS_id = 304;
699                                 break;
700                         case "GD": // Grenada
701                                 NLS_id = 308;
702                                 break;
703                         case "GP": // Guadeloupe
704                                 NLS_id = 312;
705                                 break;
706                         case "GU": // Guam
707                                 NLS_id = 316;
708                                 break;
709                         case "GT": // Guatemala
710                                 NLS_id = 320;
711                                 break;
712                         case "GN": // Guinea
713                                 NLS_id = 324;
714                                 break;
715                         case "GW": // Guinea-Bissau
716                                 NLS_id = 624;
717                                 break;
718                         case "GY": // Guyana
719                                 NLS_id = 328;
720                                 break;
721                         case "HT": // Haiti
722                                 NLS_id = 332;
723                                 break;
724                         case "HM": // Heard and Mc Donald Islands
725                                 NLS_id = 334;
726                                 break;
727                         case "VA": // Holy See (Vatican City State)
728                                 NLS_id = 336;
729                                 break;
730                         case "HN": // Honduras
731                                 NLS_id = 340;
732                                 break;
733                         case "HK": // Hong Kong
734                                 NLS_id = 344;
735                                 break;
736                         case "HU": // Hungary
737                                 NLS_id = 348;
738                                 break;
739                         case "IS": // Iceland
740                                 NLS_id = 352;
741                                 break;
742                         case "IN": // India
743                                 NLS_id = 356;
744                                 break;
745                         case "ID": // Indonesia
746                                 NLS_id = 360;
747                                 break;
748                         case "IR": // Iran (Islamic Republic of)
749                                 NLS_id = 364;
750                                 break;
751                         case "IQ": // Iraq
752                                 NLS_id = 368;
753                                 break;
754                         case "IE": // Ireland
755                                 NLS_id = 372;
756                                 break;
757                         case "IL": // Israel
758                                 NLS_id = 376;
759                                 break;
760                         case "IT": // Italy
761                                 NLS_id = 380;
762                                 break;
763                         case "JM": // Jamaica
764                                 NLS_id = 388;
765                                 break;
766                         case "JP": // Japan
767                                 NLS_id = 392;
768                                 break;
769                         case "JO": // Jordan
770                                 NLS_id = 400;
771                                 break;
772                         case "KZ": // Kazakhstan
773                                 NLS_id = 398;
774                                 break;
775                         case "KE": // Kenya
776                                 NLS_id = 404;
777                                 break;
778                         case "KI": // Kiribati
779                                 NLS_id = 296;
780                                 break;
781                         case "KP": // Korea, Democratic People's Republic of
782                                 NLS_id = 408;
783                                 break;
784                         case "KR": // Korea, Republic of
785                                 NLS_id = 410;
786                                 break;
787                         case "KW": // Kuwait
788                                 NLS_id = 414;
789                                 break;
790                         case "KG": // Kyrgyzstan
791                                 NLS_id = 417;
792                                 break;
793                         case "LA": // Lao People's Democratic Republic
794                                 NLS_id = 418;
795                                 break;
796                         case "LV": // Latvia
797                                 NLS_id = 428;
798                                 break;
799                         case "LB": // Lebanon
800                                 NLS_id = 422;
801                                 break;
802                         case "LS": // Lesotho
803                                 NLS_id = 426;
804                                 break;
805                         case "LR": // Liberia
806                                 NLS_id = 430;
807                                 break;
808                         case "LY": // Libyan Arab Jamahiriya
809                                 NLS_id = 434;
810                                 break;
811                         case "LI": // Liechtenstein
812                                 NLS_id = 438;
813                                 break;
814                         case "LT": // Lithuania
815                                 NLS_id = 440;
816                                 break;
817                         case "LU": // Luxembourg
818                                 NLS_id = 442;
819                                 break;
820                         case "MO": // Macau
821                                 NLS_id = 446;
822                                 break;
823                         case "MK": // Macedonia, The Former Yugoslav Republic of
824                                 NLS_id = 807;
825                                 break;
826                         case "MG": // Madagascar
827                                 NLS_id = 450;
828                                 break;
829                         case "MW": // Malawi
830                                 NLS_id = 454;
831                                 break;
832                         case "MY": // Malaysia
833                                 NLS_id = 458;
834                                 break;
835                         case "MV": // Maldives
836                                 NLS_id = 462;
837                                 break;
838                         case "ML": // Mali
839                                 NLS_id = 466;
840                                 break;
841                         case "MT": // Malta
842                                 NLS_id = 470;
843                                 break;
844                         case "MH": // Marshall Islands
845                                 NLS_id = 584;
846                                 break;
847                         case "MQ": // Martinique
848                                 NLS_id = 474;
849                                 break;
850                         case "MR": // Mauritania
851                                 NLS_id = 478;
852                                 break;
853                         case "MU": // Mauritius
854                                 NLS_id = 480;
855                                 break;
856                         case "YT": // Mayotte
857                                 NLS_id = 175;
858                                 break;
859                         case "MX": // Mexico
860                                 NLS_id = 484;
861                                 break;
862                         case "FM": // Micronesia, Federated States of
863                                 NLS_id = 583;
864                                 break;
865                         case "MD": // Moldova, Republic of
866                                 NLS_id = 498;
867                                 break;
868                         case "MC": // Monaco
869                                 NLS_id = 492;
870                                 break;
871                         case "MN": // Mongolia
872                                 NLS_id = 496;
873                                 break;
874                         case "MS": // Montserrat
875                                 NLS_id = 500;
876                                 break;
877                         case "MA": // Morocco
878                                 NLS_id = 504;
879                                 break;
880                         case "MZ": // Mozambique
881                                 NLS_id = 508;
882                                 break;
883                         case "MM": // Myanmar
884                                 NLS_id = 104;
885                                 break;
886                         case "NA": // Namibia
887                                 NLS_id = 516;
888                                 break;
889                         case "NR": // Nauru
890                                 NLS_id = 520;
891                                 break;
892                         case "NP": // Nepal
893                                 NLS_id = 524;
894                                 break;
895                         case "NL": // Netherlands
896                                 NLS_id = 528;
897                                 break;
898                         case "AN": // Netherlands Antilles
899                                 NLS_id = 530;
900                                 break;
901                         case "NC": // New Caledonia
902                                 NLS_id = 540;
903                                 break;
904                         case "NZ": // New Zealand
905                                 NLS_id = 554;
906                                 break;
907                         case "NI": // Nicaragua
908                                 NLS_id = 558;
909                                 break;
910                         case "NE": // Niger
911                                 NLS_id = 562;
912                                 break;
913                         case "NG": // Nigeria
914                                 NLS_id = 566;
915                                 break;
916                         case "NU": // Niue
917                                 NLS_id = 570;
918                                 break;
919                         case "NF": // Norfolk Island
920                                 NLS_id = 574;
921                                 break;
922                         case "MP": // Northern Mariana Islands
923                                 NLS_id = 580;
924                                 break;
925                         case "NO": // Norway
926                                 NLS_id = 578;
927                                 break;
928                         case "OM": // Oman
929                                 NLS_id = 512;
930                                 break;
931                         case "PK": // Pakistan
932                                 NLS_id = 586;
933                                 break;
934                         case "PW": // Palau
935                                 NLS_id = 585;
936                                 break;
937                         case "PA": // Panama
938                                 NLS_id = 591;
939                                 break;
940                         case "PG": // Papua New Guinea
941                                 NLS_id = 598;
942                                 break;
943                         case "PY": // Paraguay
944                                 NLS_id = 600;
945                                 break;
946                         case "PE": // Peru
947                                 NLS_id = 604;
948                                 break;
949                         case "PH": // Philippines
950                                 NLS_id = 608;
951                                 break;
952                         case "PN": // Pitcairn
953                                 NLS_id = 612;
954                                 break;
955                         case "PL": // Poland
956                                 NLS_id = 616;
957                                 break;
958                         case "PT": // Portugal
959                                 NLS_id = 620;
960                                 break;
961                         case "PR": // Puerto Rico
962                                 NLS_id = 630;
963                                 break;
964                         case "QA": // Qatar
965                                 NLS_id = 634;
966                                 break;
967                         case "RE": // Reunion
968                                 NLS_id = 638;
969                                 break;
970                         case "RO": // Romania
971                                 NLS_id = 642;
972                                 break;
973                         case "RU": // Russian Federation
974                                 NLS_id = 643;
975                                 break;
976                         case "RW": // Rwanda
977                                 NLS_id = 646;
978                                 break;
979                         case "KN": // Saint Kitts and Nevis
980                                 NLS_id = 659;
981                                 break;
982                         case "LC": // Saint Lucia
983                                 NLS_id = 662;
984                                 break;
985                         case "VC": // Saint Vincent and The Grenadines
986                                 NLS_id = 670;
987                                 break;
988                         case "WS": // Samoa
989                                 NLS_id = 882;
990                                 break;
991                         case "SM": // San Marino
992                                 NLS_id = 674;
993                                 break;
994                         case "ST": // Sao Tome and Principe
995                                 NLS_id = 678;
996                                 break;
997                         case "SA": // Saudi Arabia
998                                 NLS_id = 682;
999                                 break;
1000                         case "SN": // Senegal
1001                                 NLS_id = 686;
1002                                 break;
1003                         case "SC": // Seychelles
1004                                 NLS_id = 690;
1005                                 break;
1006                         case "SL": // Sierra Leone
1007                                 NLS_id = 694;
1008                                 break;
1009                         case "SG": // Singapore
1010                                 NLS_id = 702;
1011                                 break;
1012                         case "SK": // Slovakia (Slovak Republic)
1013                                 NLS_id = 703;
1014                                 break;
1015                         case "SI": // Slovenia
1016                                 NLS_id = 705;
1017                                 break;
1018                         case "SB": // Solomon Islands
1019                                 NLS_id = 090;
1020                                 break;
1021                         case "SO": // Somalia
1022                                 NLS_id = 706;
1023                                 break;
1024                         case "ZA": // South Africa
1025                                 NLS_id = 710;
1026                                 break;
1027                         case "GS": // South Georgia and The South Sandwich Islands
1028                                 NLS_id = 239;
1029                                 break;
1030                         case "ES": // Spain
1031                                 NLS_id = 724;
1032                                 break;
1033                         case "LK": // Sri Lanka
1034                                 NLS_id = 144;
1035                                 break;
1036                         case "SH": // St. Helena
1037                                 NLS_id = 654;
1038                                 break;
1039                         case "PM": // St. Pierre and Miquelon
1040                                 NLS_id = 666;
1041                                 break;
1042                         case "SD": // Sudan
1043                                 NLS_id = 736;
1044                                 break;
1045                         case "SR": // Suriname
1046                                 NLS_id = 740;
1047                                 break;
1048                         case "SJ": // Svalbard and Jan Mayen Islands
1049                                 NLS_id = 744;
1050                                 break;
1051                         case "SZ": // Swaziland
1052                                 NLS_id = 748;
1053                                 break;
1054                         case "SE": // Sweden
1055                                 NLS_id = 752;
1056                                 break;
1057                         case "CH": // Switzerland
1058                                 NLS_id = 756;
1059                                 break;
1060                         case "SY": // Syrian Arab Republic
1061                                 NLS_id = 760;
1062                                 break;
1063                         case "TW": // Taiwan, Province of China
1064                                 NLS_id = 158;
1065                                 break;
1066                         case "TJ": // Tajikistan
1067                                 NLS_id = 762;
1068                                 break;
1069                         case "TZ": // Tanzania, United Republic of
1070                                 NLS_id = 834;
1071                                 break;
1072                         case "TH": // Thailand
1073                                 NLS_id = 764;
1074                                 break;
1075                         case "TG": // Togo
1076                                 NLS_id = 768;
1077                                 break;
1078                         case "TK": // Tokelau
1079                                 NLS_id = 772;
1080                                 break;
1081                         case "TO": // Tonga
1082                                 NLS_id = 776;
1083                                 break;
1084                         case "TT": // Trinidad and Tobago
1085                                 NLS_id = 780;
1086                                 break;
1087                         case "TN": // Tunisia
1088                                 NLS_id = 788;
1089                                 break;
1090                         case "TR": // Turkey
1091                                 NLS_id = 792;
1092                                 break;
1093                         case "TM": // Turkmenistan
1094                                 NLS_id = 795;
1095                                 break;
1096                         case "TC": // Turks and Caicos Islands
1097                                 NLS_id = 796;
1098                                 break;
1099                         case "TV": // Tuvalu
1100                                 NLS_id = 798;
1101                                 break;
1102                         case "UG": // Uganda
1103                                 NLS_id = 800;
1104                                 break;
1105                         case "UA": // Ukraine
1106                                 NLS_id = 804;
1107                                 break;
1108                         case "AE": // United Arab Emirates
1109                                 NLS_id = 784;
1110                                 break;
1111                         case "GB": // United Kingdom
1112                                 NLS_id = 826;
1113                                 break;
1114                         case "US": // United States
1115                                 NLS_id = 840;
1116                                 break;
1117                         case "UM": // United States Minor Outlying Islands
1118                                 NLS_id = 581;
1119                                 break;
1120                         case "UY": // Uruguay
1121                                 NLS_id = 858;
1122                                 break;
1123                         case "UZ": // Uzbekistan
1124                                 NLS_id = 860;
1125                                 break;
1126                         case "VU": // Vanuatu
1127                                 NLS_id = 548;
1128                                 break;
1129                         case "VE": // Venezuela
1130                                 NLS_id = 862;
1131                                 break;
1132                         case "VN": // Viet Nam
1133                                 NLS_id = 704;
1134                                 break;
1135                         case "VG": // Virgin Islands (British)
1136                                 NLS_id = 092;
1137                                 break;
1138                         case "VI": // Virgin Islands (U.S.)
1139                                 NLS_id = 850;
1140                                 break;
1141                         case "WF": // Wallis and Futuna Islands
1142                                 NLS_id = 876;
1143                                 break;
1144                         case "EH": // Western Sahara
1145                                 NLS_id = 732;
1146                                 break;
1147                         case "YE": // Yemen
1148                                 NLS_id = 887;
1149                                 break;
1150                         case "YU": // Yugoslavia
1151                                 NLS_id = 891;
1152                                 break;
1153                         case "ZR": // Zaire
1154                                 NLS_id = 180;
1155                                 break;
1156                         case "ZM": // Zambia
1157                                 NLS_id = 894;
1158                                 break;
1159                         case "ZW": // Zimbabwe
1160                                 NLS_id = 716;
1161                                 break;
1162                         default:
1163                                 throw new ArgumentException ("Region name " + name + " is not supported.");
1164                         }
1165                 }
1166
1167                 [MonoTODO]
1168                 public virtual string CurrencySymbol {
1169                         get {
1170                                 switch (NLS_id) {
1171                                 default:
1172                                         throw new Exception ("Dunno what is currency symbol for " + NLS_id + " Region. FIXME.");
1173                                 }
1174                         }
1175                 }
1176
1177                 // This property is not synchronized with CurrentCulture, so
1178                 // we need to use bootstrap CurrentCulture LCID.
1179                 public static RegionInfo CurrentRegion {
1180                         get {
1181                                 if (currentRegion == null) {
1182                                         CultureInfo ci = CultureInfo.CurrentCulture;
1183                                         // If current culture is invariant then region is not available.
1184                                         if (CultureInfo.BootstrapCultureID == 0x7F)
1185                                                 return null;
1186                                         lock (forLock) {
1187                                                 // make sure to fill BootstrapCultureID.
1188                                                 currentRegion = new RegionInfo (CultureInfo.BootstrapCultureID);
1189                                         }
1190                                 }
1191                                 return currentRegion;
1192                         }
1193                 }
1194
1195                 [MonoTODO]
1196                 public virtual string DisplayName {
1197                         get {
1198                                 switch (NLS_id) {
1199                                 case 203: // Czech republic
1200                                         return "Èeská republika";
1201                                 case 840: // United States
1202                                         return "United States";
1203                                 default:
1204                                         throw new Exception ("FIXME. Please add your region name in language used in this region.");
1205                                 }
1206                         }
1207                 }
1208
1209                 public virtual string EnglishName {
1210                         get {
1211                                 switch (NLS_id) {
1212                                 case 004:
1213                                         return "Afghanistan";
1214                                 case 008:
1215                                         return "Albania";
1216                                 case 012:
1217                                         return "Algeria";
1218                                 case 016:
1219                                         return "American Samoa";
1220                                 case 020:
1221                                         return "Andorra";
1222                                 case 024:
1223                                         return "Angola";
1224                                 case 660:
1225                                         return "Anguilla";
1226                                 case 010:
1227                                         return "Antarctica";
1228                                 case 028:
1229                                         return "Antigua and Barbuda";
1230                                 case 032:
1231                                         return "Argentina";
1232                                 case 051:
1233                                         return "Armenia";
1234                                 case 533:
1235                                         return "Aruba";
1236                                 case 036:
1237                                         return "Australia";
1238                                 case 040:
1239                                         return "Austria";
1240                                 case 031:
1241                                         return "Azerbaijan";
1242                                 case 044:
1243                                         return "Bahamas";
1244                                 case 048:
1245                                         return "Bahrain";
1246                                 case 050:
1247                                         return "Bangladesh";
1248                                 case 052:
1249                                         return "Barbados";
1250                                 case 112:
1251                                         return "Belarus";
1252                                 case 056:
1253                                         return "Belgium";
1254                                 case 084:
1255                                         return "Belize";
1256                                 case 204:
1257                                         return "Benin";
1258                                 case 060:
1259                                         return "Bermuda";
1260                                 case 064:
1261                                         return "Bhutan";
1262                                 case 068:
1263                                         return "Bolivia";
1264                                 case 070:
1265                                         return "Bosnia and Herzegowina";
1266                                 case 072:
1267                                         return "Botswana";
1268                                 case 074:
1269                                         return "Bouvet Island";
1270                                 case 076:
1271                                         return "Brazil";
1272                                 case 086:
1273                                         return "British Indian Ocean Territory";
1274                                 case 096:
1275                                         return "Brunei Darussalam";
1276                                 case 100:
1277                                         return "Bulgaria";
1278                                 case 854:
1279                                         return "Burkina Faso";
1280                                 case 108:
1281                                         return "Burundi";
1282                                 case 116:
1283                                         return "Cambodia";
1284                                 case 120:
1285                                         return "Cameroon";
1286                                 case 124:
1287                                         return "Canada";
1288                                 case 132:
1289                                         return "Cape Verde";
1290                                 case 136:
1291                                         return "Cayman Islands";
1292                                 case 140:
1293                                         return "Central African Republic";
1294                                 case 148:
1295                                         return "Chad";
1296                                 case 152:
1297                                         return "Chile";
1298                                 case 156:
1299                                         return "China";
1300                                 case 162:
1301                                         return "Christmas Island";
1302                                 case 166:
1303                                         return "Cocos (Keeling) Islands";
1304                                 case 170:
1305                                         return "Colombia";
1306                                 case 174:
1307                                         return "Comoros";
1308                                 case 178:
1309                                         return "Congo";
1310                                 case 184:
1311                                         return "Cook Islands";
1312                                 case 188:
1313                                         return "Costa Rica";
1314                                 case 384:
1315                                         return "Cote D'Ivoire";
1316                                 case 191:
1317                                         return "Croatia (Local Name: Hrvatska)";
1318                                 case 192:
1319                                         return "Cuba";
1320                                 case 196:
1321                                         return "Cyprus";
1322                                 case 203:
1323                                         return "Czech Republic";
1324                                 case 208:
1325                                         return "Denmark";
1326                                 case 262:
1327                                         return "Djibouti";
1328                                 case 212:
1329                                         return "Dominica";
1330                                 case 214:
1331                                         return "Dominican Republic";
1332                                 case 626:
1333                                         return "East Timor";
1334                                 case 218:
1335                                         return "Ecuador";
1336                                 case 818:
1337                                         return "Egypt";
1338                                 case 222:
1339                                         return "El Salvador";
1340                                 case 226:
1341                                         return "Equatorial Guinea";
1342                                 case 232:
1343                                         return "Eritrea";
1344                                 case 233:
1345                                         return "Estonia";
1346                                 case 231:
1347                                         return "Ethiopia";
1348                                 case 238:
1349                                         return "Falkland Islands (Malvinas)";
1350                                 case 234:
1351                                         return "Faroe Islands";
1352                                 case 242:
1353                                         return "Fiji";
1354                                 case 246:
1355                                         return "Finland";
1356                                 case 250:
1357                                         return "France";
1358                                 case 249:
1359                                         return "France, Metropolitan";
1360                                 case 254:
1361                                         return "French Guiana";
1362                                 case 258:
1363                                         return "French Polynesia";
1364                                 case 260:
1365                                         return "French Southern Territories";
1366                                 case 266:
1367                                         return "Gabon";
1368                                 case 270:
1369                                         return "Gambia";
1370                                 case 268:
1371                                         return "Georgia";
1372                                 case 276:
1373                                         return "Germany";
1374                                 case 288:
1375                                         return "Ghana";
1376                                 case 292:
1377                                         return "Gibraltar";
1378                                 case 300:
1379                                         return "Greece";
1380                                 case 304:
1381                                         return "Greenland";
1382                                 case 308:
1383                                         return "Grenada";
1384                                 case 312:
1385                                         return "Guadeloupe";
1386                                 case 316:
1387                                         return "Guam";
1388                                 case 320:
1389                                         return "Guatemala";
1390                                 case 324:
1391                                         return "Guinea";
1392                                 case 624:
1393                                         return "Guinea-Bissau";
1394                                 case 328:
1395                                         return "Guyana";
1396                                 case 332:
1397                                         return "Haiti";
1398                                 case 334:
1399                                         return "Heard and Mc Donald Islands";
1400                                 case 336:
1401                                         return "Holy See (Vatican City State)";
1402                                 case 340:
1403                                         return "Honduras";
1404                                 case 344:
1405                                         return "Hong Kong";
1406                                 case 348:
1407                                         return "Hungary";
1408                                 case 352:
1409                                         return "Iceland";
1410                                 case 356:
1411                                         return "India";
1412                                 case 360:
1413                                         return "Indonesia";
1414                                 case 364:
1415                                         return "Iran (Islamic Republic of)";
1416                                 case 368:
1417                                         return "Iraq";
1418                                 case 372:
1419                                         return "Ireland";
1420                                 case 376:
1421                                         return "Israel";
1422                                 case 380:
1423                                         return "Italy";
1424                                 case 388:
1425                                         return "Jamaica";
1426                                 case 392:
1427                                         return "Japan";
1428                                 case 400:
1429                                         return "Jordan";
1430                                 case 398:
1431                                         return "Kazakhstan";
1432                                 case 404:
1433                                         return "Kenya";
1434                                 case 296:
1435                                         return "Kiribati";
1436                                 case 408:
1437                                         return "Korea, Democratic People's Republic of";
1438                                 case 410:
1439                                         return "Korea, Republic of";
1440                                 case 414:
1441                                         return "Kuwait";
1442                                 case 417:
1443                                         return "Kyrgyzstan";
1444                                 case 418:
1445                                         return "Lao People's Democratic Republic";
1446                                 case 428:
1447                                         return "Latvia";
1448                                 case 422:
1449                                         return "Lebanon";
1450                                 case 426:
1451                                         return "Lesotho";
1452                                 case 430:
1453                                         return "Liberia";
1454                                 case 434:
1455                                         return "Libyan Arab Jamahiriya";
1456                                 case 438:
1457                                         return "Liechtenstein";
1458                                 case 440:
1459                                         return "Lithuania";
1460                                 case 442:
1461                                         return "Luxembourg";
1462                                 case 446:
1463                                         return "Macau";
1464                                 case 807:
1465                                         return "Macedonia, The Former Yugoslav Republic of";
1466                                 case 450:
1467                                         return "Madagascar";
1468                                 case 454:
1469                                         return "Malawi";
1470                                 case 458:
1471                                         return "Malaysia";
1472                                 case 462:
1473                                         return "Maldives";
1474                                 case 466:
1475                                         return "Mali";
1476                                 case 470:
1477                                         return "Malta";
1478                                 case 584:
1479                                         return "Marshall Islands";
1480                                 case 474:
1481                                         return "Martinique";
1482                                 case 478:
1483                                         return "Mauritania";
1484                                 case 480:
1485                                         return "Mauritius";
1486                                 case 175:
1487                                         return "Mayotte";
1488                                 case 484:
1489                                         return "Mexico";
1490                                 case 583:
1491                                         return "Micronesia, Federated States of";
1492                                 case 498:
1493                                         return "Moldova, Republic of";
1494                                 case 492:
1495                                         return "Monaco";
1496                                 case 496:
1497                                         return "Mongolia";
1498                                 case 500:
1499                                         return "Montserrat";
1500                                 case 504:
1501                                         return "Morocco";
1502                                 case 508:
1503                                         return "Mozambique";
1504                                 case 104:
1505                                         return "Myanmar";
1506                                 case 516:
1507                                         return "Namibia";
1508                                 case 520:
1509                                         return "Nauru";
1510                                 case 524:
1511                                         return "Nepal";
1512                                 case 528:
1513                                         return "Netherlands";
1514                                 case 530:
1515                                         return "Netherlands Antilles";
1516                                 case 540:
1517                                         return "New Caledonia";
1518                                 case 554:
1519                                         return "New Zealand";
1520                                 case 558:
1521                                         return "Nicaragua";
1522                                 case 562:
1523                                         return "Niger";
1524                                 case 566:
1525                                         return "Nigeria";
1526                                 case 570:
1527                                         return "Niue";
1528                                 case 574:
1529                                         return "Norfolk Island";
1530                                 case 580:
1531                                         return "Northern Mariana Islands";
1532                                 case 578:
1533                                         return "Norway";
1534                                 case 512:
1535                                         return "Oman";
1536                                 case 586:
1537                                         return "Pakistan";
1538                                 case 585:
1539                                         return "Palau";
1540                                 case 591:
1541                                         return "Panama";
1542                                 case 598:
1543                                         return "Papua New Guinea";
1544                                 case 600:
1545                                         return "Paraguay";
1546                                 case 604:
1547                                         return "Peru";
1548                                 case 608:
1549                                         return "Philippines";
1550                                 case 612:
1551                                         return "Pitcairn";
1552                                 case 616:
1553                                         return "Poland";
1554                                 case 620:
1555                                         return "Portugal";
1556                                 case 630:
1557                                         return "Puerto Rico";
1558                                 case 634:
1559                                         return "Qatar";
1560                                 case 638:
1561                                         return "Reunion";
1562                                 case 642:
1563                                         return "Romania";
1564                                 case 643:
1565                                         return "Russian Federation";
1566                                 case 646:
1567                                         return "Rwanda";
1568                                 case 659:
1569                                         return "Saint Kitts and Nevis";
1570                                 case 662:
1571                                         return "Saint Lucia";
1572                                 case 670:
1573                                         return "Saint Vincent and The Grenadines";
1574                                 case 882:
1575                                         return "Samoa";
1576                                 case 674:
1577                                         return "San Marino";
1578                                 case 678:
1579                                         return "Sao Tome and Principe";
1580                                 case 682:
1581                                         return "Saudi Arabia";
1582                                 case 686:
1583                                         return "Senegal";
1584                                 case 690:
1585                                         return "Seychelles";
1586                                 case 694:
1587                                         return "Sierra Leone";
1588                                 case 702:
1589                                         return "Singapore";
1590                                 case 703:
1591                                         return "Slovakia (Slovak Republic)";
1592                                 case 705:
1593                                         return "Slovenia";
1594                                 case 090:
1595                                         return "Solomon Islands";
1596                                 case 706:
1597                                         return "Somalia";
1598                                 case 710:
1599                                         return "South Africa";
1600                                 case 239:
1601                                         return "South Georgia and The South Sandwich Islands";
1602                                 case 724:
1603                                         return "Spain";
1604                                 case 144:
1605                                         return "Sri Lanka";
1606                                 case 654:
1607                                         return "St. Helena";
1608                                 case 666:
1609                                         return "St. Pierre and Miquelon";
1610                                 case 736:
1611                                         return "Sudan";
1612                                 case 740:
1613                                         return "Suriname";
1614                                 case 744:
1615                                         return "Svalbard and Jan Mayen Islands";
1616                                 case 748:
1617                                         return "Swaziland";
1618                                 case 752:
1619                                         return "Sweden";
1620                                 case 756:
1621                                         return "Switzerland";
1622                                 case 760:
1623                                         return "Syrian Arab Republic";
1624                                 case 158:
1625                                         return "Taiwan, Province of China";
1626                                 case 762:
1627                                         return "Tajikistan";
1628                                 case 834:
1629                                         return "Tanzania, United Republic of";
1630                                 case 764:
1631                                         return "Thailand";
1632                                 case 768:
1633                                         return "Togo";
1634                                 case 772:
1635                                         return "Tokelau";
1636                                 case 776:
1637                                         return "Tonga";
1638                                 case 780:
1639                                         return "Trinidad and Tobago";
1640                                 case 788:
1641                                         return "Tunisia";
1642                                 case 792:
1643                                         return "Turkey";
1644                                 case 795:
1645                                         return "Turkmenistan";
1646                                 case 796:
1647                                         return "Turks and Caicos Islands";
1648                                 case 798:
1649                                         return "Tuvalu";
1650                                 case 800:
1651                                         return "Uganda";
1652                                 case 804:
1653                                         return "Ukraine";
1654                                 case 784:
1655                                         return "United Arab Emirates";
1656                                 case 826:
1657                                         return "United Kingdom";
1658                                 case 840:
1659                                         return "United States";
1660                                 case 581:
1661                                         return "United States Minor Outlying Islands";
1662                                 case 858:
1663                                         return "Uruguay";
1664                                 case 860:
1665                                         return "Uzbekistan";
1666                                 case 548:
1667                                         return "Vanuatu";
1668                                 case 862:
1669                                         return "Venezuela";
1670                                 case 704:
1671                                         return "Viet Nam";
1672                                 case 092:
1673                                         return "Virgin Islands (British)";
1674                                 case 850:
1675                                         return "Virgin Islands (U.S.)";
1676                                 case 876:
1677                                         return "Wallis and Futuna Islands";
1678                                 case 732:
1679                                         return "Western Sahara";
1680                                 case 887:
1681                                         return "Yemen";
1682                                 case 891:
1683                                         return "Yugoslavia";
1684                                 case 180:
1685                                         return "Zaire";
1686                                 case 894:
1687                                         return "Zambia";
1688                                 case 716:
1689                                         return "Zimbabwe";
1690                                 default:
1691                                         throw new Exception ("This code should not be reached.");
1692                                 }
1693                         }
1694                 }
1695
1696                 [MonoTODO]
1697                 public virtual bool IsMetric {
1698                         get {
1699                                 switch (NLS_id) {
1700                                 case 203: // Czech Republic
1701                                         return true;
1702                                 case 840: // United States
1703                                         return false;
1704                                 default:
1705                                         throw new Exception ("FIXME. Please define.");
1706                                 }
1707                         }
1708                 }
1709
1710                 [MonoTODO]
1711                 public virtual string ISOCurrencySymbol {
1712                         get {
1713                                 switch (NLS_id) {
1714                                 default:
1715                                         throw new Exception ("This code should not be reached.");
1716                                 }
1717                         }
1718                 }
1719
1720                 [MonoTODO]
1721                 public virtual string Name
1722                 {
1723                         get {
1724                                 throw new NotImplementedException();
1725                         }
1726                 }
1727
1728                 [MonoTODO]
1729                 public virtual string ThreeLetterISORegionName
1730                 {
1731                         get {
1732                                 throw new NotImplementedException();
1733                         }
1734                 }
1735
1736                 [MonoTODO]
1737                 public virtual string ThreeLetterWindowsRegionName
1738                 {
1739                         get {
1740                                 throw new NotImplementedException();
1741                         }
1742                 }
1743                 
1744                 [MonoTODO]
1745                 public virtual string TwoLetterISORegionName
1746                 {
1747                         get {
1748                                 throw new NotImplementedException();
1749                         }
1750                 }
1751
1752                 //
1753                 // methods
1754
1755                 [MonoTODO]
1756                 public override bool Equals (object value) {
1757                         return value == this;
1758                 }
1759
1760                 public override int GetHashCode () {
1761                         return NLS_id.GetHashCode ();
1762                 }
1763
1764                 public override string ToString ()
1765                 {
1766                         return Name;
1767                 }
1768                 
1769         }
1770
1771 }