2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / corlib / System.Globalization / RegionInfo.cs
index 01cfa05b2a4956cb9d07ac1be119aa79ef041137..47fe0aaf1333fa5c40b5c5266170329ca861c870 100644 (file)
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
 using System.Globalization;
 
 namespace System.Globalization {
 
+       [Serializable]
        public class RegionInfo {
                int NLS_id;
 
                public RegionInfo (int culture) {
-
-                       if (CultureInfo.IsIDNeutralCulture (culture))
-                               throw new ArgumentException ("Culture ID " + culture
-                                                        + " (0x" + culture.ToString ("X4")
-                                                        + ") is a neutral culture. A region can not be created from it.");
-
+                       
                        switch (culture) {
                        case 0x0401: // ar-SA Arabic (Saudi Arabia)
+                               NLS_id = 682;
+                               break;
                        case 0x0801: // ar-IQ Arabic (Iraq)
+                               NLS_id = 368;
+                               break;
                        case 0x0C01: // ar-EG Arabic (Egypt)
+                               NLS_id = 818;
+                               break;
                        case 0x1001: // ar-LY Arabic (Libya)
+                               NLS_id = 434;
+                               break;
                        case 0x1401: // ar-DZ Arabic (Algeria)
+                               NLS_id = 12;
+                               break;
                        case 0x1801: // ar-MA Arabic (Morocco)
+                               NLS_id = 504;
+                               break;
                        case 0x1C01: // ar-TN Arabic (Tunisia)
+                               NLS_id = 788;
+                               break;
                        case 0x2001: // ar-OM Arabic (Oman)
+                               NLS_id = 512;
+                               break;
                        case 0x2401: // ar-YE Arabic (Yemen)
+                               NLS_id = 887;
+                               break;
                        case 0x2801: // ar-SY Arabic (Syria)
+                               NLS_id = 760;
+                               break;
                        case 0x2C01: // ar-JO Arabic (Jordan)
+                               NLS_id = 400;
+                               break;
                        case 0x3001: // ar-LB Arabic (Lebanon)
+                               NLS_id = 422;
+                               break;
                        case 0x3401: // ar-KW Arabic (Kuwait)
+                               NLS_id = 414;
+                               break;
                        case 0x3801: // ar-AE Arabic (U.A.E.)
+                               NLS_id = 784;
+                               break;
                        case 0x3C01: // ar-BH Arabic (Bahrain)
+                               NLS_id = 48;
+                               break;
                        case 0x4001: // ar-QA Arabic (Qatar)
+                               NLS_id = 634;
+                               break;
                        case 0x0402: // bg-BG Bulgarian (Bulgaria)
+                               NLS_id = 100;
+                               break;
                        case 0x0403: // ca-ES Catalan (Spain)
-                       case 0x0004: // zh-CHS Chinese (Simplified)
+                               NLS_id = 724;
+                               break;
                        case 0x0404: // zh-TW Chinese (Taiwan)
+                               NLS_id = 158;
+                               break;
                        case 0x0804: // zh-CN Chinese (People's Republic of China)
+                               NLS_id = 156;
+                               break;
                        case 0x0C04: // zh-HK Chinese (Hong Kong S.A.R.)
+                               NLS_id = 344;
+                               break;
                        case 0x1004: // zh-SG Chinese (Singapore)
+                               NLS_id = 702;
+                               break;
                        case 0x1404: // zh-MO Chinese (Macau S.A.R.)
-                       case 0x7C04: // zh-CHT Chinese (Traditional)
+                               NLS_id = 446;
+                               break;
                        case 0x0405: // cs-CZ Czech (Czech Republic)
+                               NLS_id = 203;
+                               break;
                        case 0x0406: // da-DK Danish (Denmark)
+                               NLS_id = 208;
+                               break;
                        case 0x0407: // de-DE German (Germany)
+                               NLS_id = 276;
+                               break;
                        case 0x0807: // de-CH German (Switzerland)
+                               NLS_id = 756;
+                               break;
                        case 0x0C07: // de-AT German (Austria)
+                               NLS_id = 40;
+                               break;
                        case 0x1007: // de-LU German (Luxembourg)
+                               NLS_id = 442;
+                               break;
                        case 0x1407: // de-LI German (Liechtenstein)
+                               NLS_id = 438;
+                               break;
                        case 0x0408: // el-GR Greek (Greece)
+                               NLS_id = 300;
+                               break;
                        case 0x0409: // en-US English (United States)
+                               NLS_id = 840;
+                               break;
                        case 0x0809: // en-GB English (United Kingdom)
+                               NLS_id = 826;
+                               break;
                        case 0x0C09: // en-AU English (Australia)
+                               NLS_id = 36;
+                               break;
                        case 0x1009: // en-CA English (Canada)
+                               NLS_id = 124;
+                               break;
                        case 0x1409: // en-NZ English (New Zealand)
+                               NLS_id = 554;
+                               break;
                        case 0x1809: // en-IE English (Ireland)
+                               NLS_id = 372;
+                               break;
                        case 0x1C09: // en-ZA English (South Africa)
+                               NLS_id = 710;
+                               break;
                        case 0x2009: // en-JM English (Jamaica)
-                       case 0x2409: // en-CB English (Caribbean)
+                               NLS_id = 388;
+                               break;
                        case 0x2809: // en-BZ English (Belize)
+                               NLS_id = 84;
+                               break;
                        case 0x2C09: // en-TT English (Trinidad and Tobago)
+                               NLS_id = 780;
+                               break;
                        case 0x3009: // en-ZW English (Zimbabwe)
+                               NLS_id = 716;
+                               break;
                        case 0x3409: // en-PH English (Republic of the Philippines)
+                               NLS_id = 608;
+                               break;
                        case 0x080A: // es-MX Spanish (Mexico)
+                               NLS_id = 484;
+                               break;
                        case 0x0C0A: // es-ES Spanish (Spain)
+                               NLS_id = 724;
+                               break;
                        case 0x100A: // es-GT Spanish (Guatemala)
+                               NLS_id = 320;
+                               break;
                        case 0x140A: // es-CR Spanish (Costa Rica)
+                               NLS_id = 188;
+                               break;
                        case 0x180A: // es-PA Spanish (Panama)
+                               NLS_id = 591;
+                               break;
                        case 0x1C0A: // es-DO Spanish (Dominican Republic)
+                               NLS_id = 214;
+                               break;
                        case 0x200A: // es-VE Spanish (Venezuela)
+                               NLS_id = 862;
+                               break;
                        case 0x240A: // es-CO Spanish (Colombia)
+                               NLS_id = 170;
+                               break;
                        case 0x280A: // es-PE Spanish (Peru)
+                               NLS_id = 604;
+                               break;
                        case 0x2C0A: // es-AR Spanish (Argentina)
+                               NLS_id = 32;
+                               break;
                        case 0x300A: // es-EC Spanish (Ecuador)
+                               NLS_id = 218;
+                               break;
                        case 0x340A: // es-CL Spanish (Chile)
+                               NLS_id = 152;
+                               break;
                        case 0x380A: // es-UY Spanish (Uruguay)
+                               NLS_id = 858;
+                               break;
                        case 0x3C0A: // es-PY Spanish (Paraguay)
+                               NLS_id = 600;
+                               break;
                        case 0x400A: // es-BO Spanish (Bolivia)
+                               NLS_id = 68;
+                               break;
                        case 0x440A: // es-SV Spanish (El Salvador)
+                               NLS_id = 222;
+                               break;
                        case 0x480A: // es-HN Spanish (Honduras)
+                               NLS_id = 340;
+                               break;
                        case 0x4C0A: // es-NI Spanish (Nicaragua)
+                               NLS_id = 558;
+                               break;
                        case 0x500A: // es-PR Spanish (Puerto Rico)
+                               NLS_id = 630;
+                               break;
                        case 0x040B: // fi-FI Finnish (Finland)
+                               NLS_id = 246;
+                               break;
                        case 0x040C: // fr-FR French (France)
+                               NLS_id = 250;
+                               break;
                        case 0x080C: // fr-BE French (Belgium)
+                               NLS_id = 56;
+                               break;
                        case 0x0C0C: // fr-CA French (Canada)
+                               NLS_id = 124;
+                               break;
                        case 0x100C: // fr-CH French (Switzerland)
+                               NLS_id = 756;
+                               break;
                        case 0x140C: // fr-LU French (Luxembourg)
+                               NLS_id = 442;
+                               break;
                        case 0x180C: // fr-MC French (Principality of Monaco)
+                               NLS_id = 492;
+                               break;
                        case 0x040D: // he-IL Hebrew (Israel)
+                               NLS_id = 376;
+                               break;
                        case 0x040E: // hu-HU Hungarian (Hungary)
+                               NLS_id = 348;
+                               break;
                        case 0x040F: // is-IS Icelandic (Iceland)
+                               NLS_id = 352;
+                               break;
                        case 0x0410: // it-IT Italian (Italy)
+                               NLS_id = 380;
+                               break;
                        case 0x0810: // it-CH Italian (Switzerland)
+                               NLS_id = 756;
+                               break;
                        case 0x0411: // ja-JP Japanese (Japan)
+                               NLS_id = 392;
+                               break;
                        case 0x0412: // ko-KR Korean (Korea)
+                               NLS_id = 410;
+                               break;
                        case 0x0413: // nl-NL Dutch (Netherlands)
+                               NLS_id = 528;
+                               break;
                        case 0x0813: // nl-BE Dutch (Belgium)
-                       case 0x0414: // nb-NO Norwegian (BokmÃ¥l) (Norway)
+                               NLS_id = 56;
+                               break;
+                       case 0x0414: // nb-NO Norwegian (Bokm\86l) (Norway)
+                               NLS_id = 578;
+                               break;
                        case 0x0814: // nn-NO Norwegian (Nynorsk) (Norway)
+                               NLS_id = 578;
+                               break;
                        case 0x0415: // pl-PL Polish (Poland)
-                       case 0x0016: // pt Portuguese
+                               NLS_id = 616;
+                               break;
                        case 0x0416: // pt-BR Portuguese (Brazil)
+                               NLS_id = 76;
+                               break;
                        case 0x0816: // pt-PT Portuguese (Portugal)
+                               NLS_id = 620;
+                               break;
                        case 0x0418: // ro-RO Romanian (Romania)
+                               NLS_id = 642;
+                               break;
                        case 0x0419: // ru-RU Russian (Russia)
+                               NLS_id = 643;
+                               break;
                        case 0x041A: // hr-HR Croatian (Croatia)
-                       case 0x081A: // Lt-sr-SP Serbian (Latin) (Serbia)
-                       case 0x0C1A: // Cy-sr-SP Serbian (Cyrillic) (Serbia)
+                               NLS_id = 191;
+                               break;
                        case 0x041B: // sk-SK Slovak (Slovakia)
+                               NLS_id = 703;
+                               break;
                        case 0x041C: // sq-AL Albanian (Albania)
+                               NLS_id = 8;
+                               break;
                        case 0x041D: // sv-SE Swedish (Sweden)
+                               NLS_id = 752;
+                               break;
                        case 0x081D: // sv-FI Swedish (Finland)
+                               NLS_id = 246;
+                               break;
                        case 0x041E: // th-TH Thai (Thailand)
+                               NLS_id = 764;
+                               break;
                        case 0x041F: // tr-TR Turkish (Turkey)
+                               NLS_id = 792;
+                               break;
                        case 0x0420: // ur-PK Urdu (Islamic Republic of Pakistan)
+                               NLS_id = 586;
+                               break;
                        case 0x0421: // id-ID Indonesian (Indonesia)
+                               NLS_id = 360;
+                               break;
                        case 0x0422: // uk-UA Ukrainian (Ukraine)
+                               NLS_id = 804;
+                               break;
                        case 0x0423: // be-BY Belarusian (Belarus)
+                               NLS_id = 112;
+                               break;
                        case 0x0424: // sl-SI Slovenian (Slovenia)
+                               NLS_id = 705;
+                               break;
                        case 0x0425: // et-EE Estonian (Estonia)
+                               NLS_id = 233;
+                               break;
                        case 0x0426: // lv-LV Latvian (Latvia)
+                               NLS_id = 428;
+                               break;
                        case 0x0427: // lt-LT Lithuanian (Lithuania)
+                               NLS_id = 440;
+                               break;
                        case 0x0429: // fa-IR Farsi (Iran)
+                               NLS_id = 364;
+                               break;
                        case 0x042A: // vi-VN Vietnamese (Viet Nam)
+                               NLS_id = 704;
+                               break;
                        case 0x042B: // hy-AM Armenian (Armenia)
+                               NLS_id = 51;
+                               break;
                        case 0x042C: // Lt-az-AZ Azeri (Latin) (Azerbaijan)
+                               NLS_id = 31;
+                               break;
                        case 0x082C: // Cy-az-AZ Azeri (Cyrillic) (Azerbaijan)
+                               NLS_id = 31;
+                               break;
                        case 0x042D: // eu-ES Basque (Spain)
+                               NLS_id = 724;
+                               break;
                        case 0x042F: // mk-MK FYRO Macedonian (Former Yugoslav Republic of Macedonia)
+                               NLS_id = 807;
+                               break;
                        case 0x0436: // af-ZA Afrikaans (South Africa)
+                               NLS_id = 710;
+                               break;
                        case 0x0437: // ka-GE Georgian (Georgia)
+                               NLS_id = 268;
+                               break;
                        case 0x0438: // fo-FO Faeroese (Faeroe Islands)
+                               NLS_id = 234;
+                               break;
                        case 0x0439: // hi-IN Hindi (India)
+                               NLS_id = 356;
+                               break;
                        case 0x043E: // ms-MY Malay (Malaysia)
+                               NLS_id = 458;
+                               break;
                        case 0x083E: // ms-BN Malay (Brunei Darussalam)
+                               NLS_id = 96;
+                               break;
                        case 0x043F: // kk-KZ Kazakh (Kazakhstan)
+                               NLS_id = 398;
+                               break;
                        case 0x0440: // ky-KZ Kyrgyz (Kyrgyzstan)
+                               NLS_id = 398;
+                               break;
                        case 0x0441: // sw-KE Swahili (Kenya)
+                               NLS_id = 404;
+                               break;
                        case 0x0443: // Lt-uz-UZ Uzbek (Latin) (Uzbekistan)
+                               NLS_id = 860;
+                               break;
                        case 0x0843: // Cy-uz-UZ Uzbek (Cyrillic) (Uzbekistan)
-                       case 0x0444: // tt-TA Tatar (Tatarstan)
+                               NLS_id = 860;
+                               break;
                        case 0x0446: // pa-IN Punjabi (India)
+                               NLS_id = 356;
+                               break;
                        case 0x0447: // gu-IN Gujarati (India)
+                               NLS_id = 356;
+                               break;
                        case 0x0449: // ta-IN Tamil (India)
+                               NLS_id = 356;
+                               break;
                        case 0x044A: // te-IN Telugu (India)
+                               NLS_id = 356;
+                               break;
                        case 0x044B: // kn-IN Kannada (India)
+                               NLS_id = 356;
+                               break;
                        case 0x044E: // mr-IN Marathi (India)
+                               NLS_id = 356;
+                               break;
                        case 0x044F: // sa-IN Sanskrit (India)
+                               NLS_id = 356;
+                               break;
                        case 0x0450: // mn-MN Mongolian (Mongolia)
+                               NLS_id = 496;
+                               break;
                        case 0x0456: // gl-ES Galician (Spain)
+                               NLS_id = 724;
+                               break;
                        case 0x0457: // kok-IN Konkani (India)
+                               NLS_id = 356;
+                               break;
                        case 0x045A: // syr-SY Syriac (Syria)
+                               NLS_id = 760;
+                               break;
                        case 0x0465: // div-MV Divehi (Maldives)
-                       case 0x007F: //  Invariant Language (Invariant Country)
+                               NLS_id = 462;
+                               break;
+                       case 0x007F: //  Invariant Language (Invariant Country)
                                throw new ArgumentException ("There is no region associated with the Invariant Culture (Culture ID: 0x7F).");
                        default:
+                               if (CultureInfo.IsIDNeutralCulture (culture))
+                                       throw new ArgumentException ("Culture ID " + culture
+                                                        + " (0x" + culture.ToString ("X4")
+                                                        + ") is a neutral culture. A region can not be created from it.");
+
                                throw new ArgumentException ("Culture ID " + culture + " (0x" + culture.ToString ("X4")
                                                         + ") is not a supported culture.");
                        }
                }
 
                public RegionInfo (string name) {
+                       switch (name.ToUpperInvariant ()) {
+                       case "AF": // Afghanistan
+                               NLS_id = 004;
+                               break;
+                       case "AL": // Albania
+                               NLS_id = 008;
+                               break;
+                       case "DZ": // Algeria
+                               NLS_id = 012;
+                               break;
+                       case "AS": // American Samoa
+                               NLS_id = 016;
+                               break;
+                       case "AD": // Andorra
+                               NLS_id = 020;
+                               break;
+                       case "AO": // Angola
+                               NLS_id = 024;
+                               break;
+                       case "AI": // Anguilla
+                               NLS_id = 660;
+                               break;
+                       case "AQ": // Antarctica
+                               NLS_id = 010;
+                               break;
+                       case "AG": // Antigua and Barbuda
+                               NLS_id = 028;
+                               break;
+                       case "AR": // Argentina
+                               NLS_id = 032;
+                               break;
+                       case "AM": // Armenia
+                               NLS_id = 051;
+                               break;
+                       case "AW": // Aruba
+                               NLS_id = 533;
+                               break;
+                       case "AU": // Australia
+                               NLS_id = 036;
+                               break;
+                       case "AT": // Austria
+                               NLS_id = 040;
+                               break;
+                       case "AZ": // Azerbaijan
+                               NLS_id = 031;
+                               break;
+                       case "BS": // Bahamas
+                               NLS_id = 044;
+                               break;
+                       case "BH": // Bahrain
+                               NLS_id = 048;
+                               break;
+                       case "BD": // Bangladesh
+                               NLS_id = 050;
+                               break;
+                       case "BB": // Barbados
+                               NLS_id = 052;
+                               break;
+                       case "BY": // Belarus
+                               NLS_id = 112;
+                               break;
+                       case "BE": // Belgium
+                               NLS_id = 056;
+                               break;
+                       case "BZ": // Belize
+                               NLS_id = 084;
+                               break;
+                       case "BJ": // Benin
+                               NLS_id = 204;
+                               break;
+                       case "BM": // Bermuda
+                               NLS_id = 060;
+                               break;
+                       case "BT": // Bhutan
+                               NLS_id = 064;
+                               break;
+                       case "BO": // Bolivia
+                               NLS_id = 068;
+                               break;
+                       case "BA": // Bosnia and Herzegowina
+                               NLS_id = 070;
+                               break;
+                       case "BW": // Botswana
+                               NLS_id = 072;
+                               break;
+                       case "BV": // Bouvet Island
+                               NLS_id = 074;
+                               break;
+                       case "BR": // Brazil
+                               NLS_id = 076;
+                               break;
+                       case "IO": // British Indian Ocean Territory
+                               NLS_id = 086;
+                               break;
+                       case "BN": // Brunei Darussalam
+                               NLS_id = 096;
+                               break;
+                       case "BG": // Bulgaria
+                               NLS_id = 100;
+                               break;
+                       case "BF": // Burkina Faso
+                               NLS_id = 854;
+                               break;
+                       case "BI": // Burundi
+                               NLS_id = 108;
+                               break;
+                       case "KH": // Cambodia
+                               NLS_id = 116;
+                               break;
+                       case "CM": // Cameroon
+                               NLS_id = 120;
+                               break;
+                       case "CA": // Canada
+                               NLS_id = 124;
+                               break;
+                       case "CV": // Cape Verde
+                               NLS_id = 132;
+                               break;
+                       case "KY": // Cayman Islands
+                               NLS_id = 136;
+                               break;
+                       case "CF": // Central African Republic
+                               NLS_id = 140;
+                               break;
+                       case "TD": // Chad
+                               NLS_id = 148;
+                               break;
+                       case "CL": // Chile
+                               NLS_id = 152;
+                               break;
+                       case "CN": // China
+                               NLS_id = 156;
+                               break;
+                       case "CX": // Christmas Island
+                               NLS_id = 162;
+                               break;
+                       case "CC": // Cocos (Keeling) Islands
+                               NLS_id = 166;
+                               break;
+                       case "CO": // Colombia
+                               NLS_id = 170;
+                               break;
+                       case "KM": // Comoros
+                               NLS_id = 174;
+                               break;
+                       case "CG": // Congo
+                               NLS_id = 178;
+                               break;
+                       case "CK": // Cook Islands
+                               NLS_id = 184;
+                               break;
+                       case "CR": // Costa Rica
+                               NLS_id = 188;
+                               break;
+                       case "CI": // Cote D'Ivoire
+                               NLS_id = 384;
+                               break;
+                       case "HR": // Croatia (Local Name: Hrvatska)
+                               NLS_id = 191;
+                               break;
+                       case "CU": // Cuba
+                               NLS_id = 192;
+                               break;
+                       case "CY": // Cyprus
+                               NLS_id = 196;
+                               break;
+                       case "CZ": // Czech Republic
+                               NLS_id = 203;
+                               break;
+                       case "DK": // Denmark
+                               NLS_id = 208;
+                               break;
+                       case "DJ": // Djibouti
+                               NLS_id = 262;
+                               break;
+                       case "DM": // Dominica
+                               NLS_id = 212;
+                               break;
+                       case "DO": // Dominican Republic
+                               NLS_id = 214;
+                               break;
+                       case "TP": // East Timor
+                               NLS_id = 626;
+                               break;
+                       case "EC": // Ecuador
+                               NLS_id = 218;
+                               break;
+                       case "EG": // Egypt
+                               NLS_id = 818;
+                               break;
+                       case "SV": // El Salvador
+                               NLS_id = 222;
+                               break;
+                       case "GQ": // Equatorial Guinea
+                               NLS_id = 226;
+                               break;
+                       case "ER": // Eritrea
+                               NLS_id = 232;
+                               break;
+                       case "EE": // Estonia
+                               NLS_id = 233;
+                               break;
+                       case "ET": // Ethiopia
+                               NLS_id = 231;
+                               break;
+                       case "FK": // Falkland Islands (Malvinas)
+                               NLS_id = 238;
+                               break;
+                       case "FO": // Faroe Islands
+                               NLS_id = 234;
+                               break;
+                       case "FJ": // Fiji
+                               NLS_id = 242;
+                               break;
+                       case "FI": // Finland
+                               NLS_id = 246;
+                               break;
+                       case "FR": // France
+                               NLS_id = 250;
+                               break;
+                       case "FX": // France, Metropolitan
+                               NLS_id = 249;
+                               break;
+                       case "GF": // French Guiana
+                               NLS_id = 254;
+                               break;
+                       case "PF": // French Polynesia
+                               NLS_id = 258;
+                               break;
+                       case "TF": // French Southern Territories
+                               NLS_id = 260;
+                               break;
+                       case "GA": // Gabon
+                               NLS_id = 266;
+                               break;
+                       case "GM": // Gambia
+                               NLS_id = 270;
+                               break;
+                       case "GE": // Georgia
+                               NLS_id = 268;
+                               break;
+                       case "DE": // Germany
+                               NLS_id = 276;
+                               break;
+                       case "GH": // Ghana
+                               NLS_id = 288;
+                               break;
+                       case "GI": // Gibraltar
+                               NLS_id = 292;
+                               break;
+                       case "GR": // Greece
+                               NLS_id = 300;
+                               break;
+                       case "GL": // Greenland
+                               NLS_id = 304;
+                               break;
+                       case "GD": // Grenada
+                               NLS_id = 308;
+                               break;
+                       case "GP": // Guadeloupe
+                               NLS_id = 312;
+                               break;
+                       case "GU": // Guam
+                               NLS_id = 316;
+                               break;
+                       case "GT": // Guatemala
+                               NLS_id = 320;
+                               break;
+                       case "GN": // Guinea
+                               NLS_id = 324;
+                               break;
+                       case "GW": // Guinea-Bissau
+                               NLS_id = 624;
+                               break;
+                       case "GY": // Guyana
+                               NLS_id = 328;
+                               break;
+                       case "HT": // Haiti
+                               NLS_id = 332;
+                               break;
+                       case "HM": // Heard and Mc Donald Islands
+                               NLS_id = 334;
+                               break;
+                       case "VA": // Holy See (Vatican City State)
+                               NLS_id = 336;
+                               break;
+                       case "HN": // Honduras
+                               NLS_id = 340;
+                               break;
+                       case "HK": // Hong Kong
+                               NLS_id = 344;
+                               break;
+                       case "HU": // Hungary
+                               NLS_id = 348;
+                               break;
+                       case "IS": // Iceland
+                               NLS_id = 352;
+                               break;
+                       case "IN": // India
+                               NLS_id = 356;
+                               break;
+                       case "ID": // Indonesia
+                               NLS_id = 360;
+                               break;
+                       case "IR": // Iran (Islamic Republic of)
+                               NLS_id = 364;
+                               break;
+                       case "IQ": // Iraq
+                               NLS_id = 368;
+                               break;
+                       case "IE": // Ireland
+                               NLS_id = 372;
+                               break;
+                       case "IL": // Israel
+                               NLS_id = 376;
+                               break;
+                       case "IT": // Italy
+                               NLS_id = 380;
+                               break;
+                       case "JM": // Jamaica
+                               NLS_id = 388;
+                               break;
+                       case "JP": // Japan
+                               NLS_id = 392;
+                               break;
+                       case "JO": // Jordan
+                               NLS_id = 400;
+                               break;
+                       case "KZ": // Kazakhstan
+                               NLS_id = 398;
+                               break;
+                       case "KE": // Kenya
+                               NLS_id = 404;
+                               break;
+                       case "KI": // Kiribati
+                               NLS_id = 296;
+                               break;
+                       case "KP": // Korea, Democratic People's Republic of
+                               NLS_id = 408;
+                               break;
+                       case "KR": // Korea, Republic of
+                               NLS_id = 410;
+                               break;
+                       case "KW": // Kuwait
+                               NLS_id = 414;
+                               break;
+                       case "KG": // Kyrgyzstan
+                               NLS_id = 417;
+                               break;
+                       case "LA": // Lao People's Democratic Republic
+                               NLS_id = 418;
+                               break;
+                       case "LV": // Latvia
+                               NLS_id = 428;
+                               break;
+                       case "LB": // Lebanon
+                               NLS_id = 422;
+                               break;
+                       case "LS": // Lesotho
+                               NLS_id = 426;
+                               break;
+                       case "LR": // Liberia
+                               NLS_id = 430;
+                               break;
+                       case "LY": // Libyan Arab Jamahiriya
+                               NLS_id = 434;
+                               break;
+                       case "LI": // Liechtenstein
+                               NLS_id = 438;
+                               break;
+                       case "LT": // Lithuania
+                               NLS_id = 440;
+                               break;
+                       case "LU": // Luxembourg
+                               NLS_id = 442;
+                               break;
+                       case "MO": // Macau
+                               NLS_id = 446;
+                               break;
+                       case "MK": // Macedonia, The Former Yugoslav Republic of
+                               NLS_id = 807;
+                               break;
+                       case "MG": // Madagascar
+                               NLS_id = 450;
+                               break;
+                       case "MW": // Malawi
+                               NLS_id = 454;
+                               break;
+                       case "MY": // Malaysia
+                               NLS_id = 458;
+                               break;
+                       case "MV": // Maldives
+                               NLS_id = 462;
+                               break;
+                       case "ML": // Mali
+                               NLS_id = 466;
+                               break;
+                       case "MT": // Malta
+                               NLS_id = 470;
+                               break;
+                       case "MH": // Marshall Islands
+                               NLS_id = 584;
+                               break;
+                       case "MQ": // Martinique
+                               NLS_id = 474;
+                               break;
+                       case "MR": // Mauritania
+                               NLS_id = 478;
+                               break;
+                       case "MU": // Mauritius
+                               NLS_id = 480;
+                               break;
+                       case "YT": // Mayotte
+                               NLS_id = 175;
+                               break;
+                       case "MX": // Mexico
+                               NLS_id = 484;
+                               break;
+                       case "FM": // Micronesia, Federated States of
+                               NLS_id = 583;
+                               break;
+                       case "MD": // Moldova, Republic of
+                               NLS_id = 498;
+                               break;
+                       case "MC": // Monaco
+                               NLS_id = 492;
+                               break;
+                       case "MN": // Mongolia
+                               NLS_id = 496;
+                               break;
+                       case "MS": // Montserrat
+                               NLS_id = 500;
+                               break;
+                       case "MA": // Morocco
+                               NLS_id = 504;
+                               break;
+                       case "MZ": // Mozambique
+                               NLS_id = 508;
+                               break;
+                       case "MM": // Myanmar
+                               NLS_id = 104;
+                               break;
+                       case "NA": // Namibia
+                               NLS_id = 516;
+                               break;
+                       case "NR": // Nauru
+                               NLS_id = 520;
+                               break;
+                       case "NP": // Nepal
+                               NLS_id = 524;
+                               break;
+                       case "NL": // Netherlands
+                               NLS_id = 528;
+                               break;
+                       case "AN": // Netherlands Antilles
+                               NLS_id = 530;
+                               break;
+                       case "NC": // New Caledonia
+                               NLS_id = 540;
+                               break;
+                       case "NZ": // New Zealand
+                               NLS_id = 554;
+                               break;
+                       case "NI": // Nicaragua
+                               NLS_id = 558;
+                               break;
+                       case "NE": // Niger
+                               NLS_id = 562;
+                               break;
+                       case "NG": // Nigeria
+                               NLS_id = 566;
+                               break;
+                       case "NU": // Niue
+                               NLS_id = 570;
+                               break;
+                       case "NF": // Norfolk Island
+                               NLS_id = 574;
+                               break;
+                       case "MP": // Northern Mariana Islands
+                               NLS_id = 580;
+                               break;
+                       case "NO": // Norway
+                               NLS_id = 578;
+                               break;
+                       case "OM": // Oman
+                               NLS_id = 512;
+                               break;
+                       case "PK": // Pakistan
+                               NLS_id = 586;
+                               break;
+                       case "PW": // Palau
+                               NLS_id = 585;
+                               break;
+                       case "PA": // Panama
+                               NLS_id = 591;
+                               break;
+                       case "PG": // Papua New Guinea
+                               NLS_id = 598;
+                               break;
+                       case "PY": // Paraguay
+                               NLS_id = 600;
+                               break;
+                       case "PE": // Peru
+                               NLS_id = 604;
+                               break;
+                       case "PH": // Philippines
+                               NLS_id = 608;
+                               break;
+                       case "PN": // Pitcairn
+                               NLS_id = 612;
+                               break;
+                       case "PL": // Poland
+                               NLS_id = 616;
+                               break;
+                       case "PT": // Portugal
+                               NLS_id = 620;
+                               break;
+                       case "PR": // Puerto Rico
+                               NLS_id = 630;
+                               break;
+                       case "QA": // Qatar
+                               NLS_id = 634;
+                               break;
+                       case "RE": // Reunion
+                               NLS_id = 638;
+                               break;
+                       case "RO": // Romania
+                               NLS_id = 642;
+                               break;
+                       case "RU": // Russian Federation
+                               NLS_id = 643;
+                               break;
+                       case "RW": // Rwanda
+                               NLS_id = 646;
+                               break;
+                       case "KN": // Saint Kitts and Nevis
+                               NLS_id = 659;
+                               break;
+                       case "LC": // Saint Lucia
+                               NLS_id = 662;
+                               break;
+                       case "VC": // Saint Vincent and The Grenadines
+                               NLS_id = 670;
+                               break;
+                       case "WS": // Samoa
+                               NLS_id = 882;
+                               break;
+                       case "SM": // San Marino
+                               NLS_id = 674;
+                               break;
+                       case "ST": // Sao Tome and Principe
+                               NLS_id = 678;
+                               break;
+                       case "SA": // Saudi Arabia
+                               NLS_id = 682;
+                               break;
+                       case "SN": // Senegal
+                               NLS_id = 686;
+                               break;
+                       case "SC": // Seychelles
+                               NLS_id = 690;
+                               break;
+                       case "SL": // Sierra Leone
+                               NLS_id = 694;
+                               break;
+                       case "SG": // Singapore
+                               NLS_id = 702;
+                               break;
+                       case "SK": // Slovakia (Slovak Republic)
+                               NLS_id = 703;
+                               break;
+                       case "SI": // Slovenia
+                               NLS_id = 705;
+                               break;
+                       case "SB": // Solomon Islands
+                               NLS_id = 090;
+                               break;
+                       case "SO": // Somalia
+                               NLS_id = 706;
+                               break;
+                       case "ZA": // South Africa
+                               NLS_id = 710;
+                               break;
+                       case "GS": // South Georgia and The South Sandwich Islands
+                               NLS_id = 239;
+                               break;
+                       case "ES": // Spain
+                               NLS_id = 724;
+                               break;
+                       case "LK": // Sri Lanka
+                               NLS_id = 144;
+                               break;
+                       case "SH": // St. Helena
+                               NLS_id = 654;
+                               break;
+                       case "PM": // St. Pierre and Miquelon
+                               NLS_id = 666;
+                               break;
+                       case "SD": // Sudan
+                               NLS_id = 736;
+                               break;
+                       case "SR": // Suriname
+                               NLS_id = 740;
+                               break;
+                       case "SJ": // Svalbard and Jan Mayen Islands
+                               NLS_id = 744;
+                               break;
+                       case "SZ": // Swaziland
+                               NLS_id = 748;
+                               break;
+                       case "SE": // Sweden
+                               NLS_id = 752;
+                               break;
+                       case "CH": // Switzerland
+                               NLS_id = 756;
+                               break;
+                       case "SY": // Syrian Arab Republic
+                               NLS_id = 760;
+                               break;
+                       case "TW": // Taiwan, Province of China
+                               NLS_id = 158;
+                               break;
+                       case "TJ": // Tajikistan
+                               NLS_id = 762;
+                               break;
+                       case "TZ": // Tanzania, United Republic of
+                               NLS_id = 834;
+                               break;
+                       case "TH": // Thailand
+                               NLS_id = 764;
+                               break;
+                       case "TG": // Togo
+                               NLS_id = 768;
+                               break;
+                       case "TK": // Tokelau
+                               NLS_id = 772;
+                               break;
+                       case "TO": // Tonga
+                               NLS_id = 776;
+                               break;
+                       case "TT": // Trinidad and Tobago
+                               NLS_id = 780;
+                               break;
+                       case "TN": // Tunisia
+                               NLS_id = 788;
+                               break;
+                       case "TR": // Turkey
+                               NLS_id = 792;
+                               break;
+                       case "TM": // Turkmenistan
+                               NLS_id = 795;
+                               break;
+                       case "TC": // Turks and Caicos Islands
+                               NLS_id = 796;
+                               break;
+                       case "TV": // Tuvalu
+                               NLS_id = 798;
+                               break;
+                       case "UG": // Uganda
+                               NLS_id = 800;
+                               break;
+                       case "UA": // Ukraine
+                               NLS_id = 804;
+                               break;
+                       case "AE": // United Arab Emirates
+                               NLS_id = 784;
+                               break;
+                       case "GB": // United Kingdom
+                               NLS_id = 826;
+                               break;
+                       case "US": // United States
+                               NLS_id = 840;
+                               break;
+                       case "UM": // United States Minor Outlying Islands
+                               NLS_id = 581;
+                               break;
+                       case "UY": // Uruguay
+                               NLS_id = 858;
+                               break;
+                       case "UZ": // Uzbekistan
+                               NLS_id = 860;
+                               break;
+                       case "VU": // Vanuatu
+                               NLS_id = 548;
+                               break;
+                       case "VE": // Venezuela
+                               NLS_id = 862;
+                               break;
+                       case "VN": // Viet Nam
+                               NLS_id = 704;
+                               break;
+                       case "VG": // Virgin Islands (British)
+                               NLS_id = 092;
+                               break;
+                       case "VI": // Virgin Islands (U.S.)
+                               NLS_id = 850;
+                               break;
+                       case "WF": // Wallis and Futuna Islands
+                               NLS_id = 876;
+                               break;
+                       case "EH": // Western Sahara
+                               NLS_id = 732;
+                               break;
+                       case "YE": // Yemen
+                               NLS_id = 887;
+                               break;
+                       case "YU": // Yugoslavia
+                               NLS_id = 891;
+                               break;
+                       case "ZR": // Zaire
+                               NLS_id = 180;
+                               break;
+                       case "ZM": // Zambia
+                               NLS_id = 894;
+                               break;
+                       case "ZW": // Zimbabwe
+                               NLS_id = 716;
+                               break;
+                       default:
+                               throw new ArgumentException ("Region name " + name + " is not supported.");
+                       }
+               }
+
+               public virtual string CurrencySymbol {
+                       get {
+                               switch (NLS_id) {
+                               default:
+                                       throw new Exception ("Dunno what is currency symbol for " + NLS_id + " Region. FIXME.");
+                               }
+                       }
+               }
+
+               [MonoTODO]
+               public static RegionInfo CurrentRegion {
+                       get {
+                               return null;
+                       }
+               }
+
+               public virtual string DisplayName {
+                       get {
+                               switch (NLS_id) {
+                               case 203: // Czech republic
+                                       return "Èeská republika";
+                               case 840: // United States
+                                       return "United States";
+                               default:
+                                       throw new Exception ("FIXME. Please add your region name in language used in this region.");
+                               }
+                       }
+               }
+
+               public virtual string EnglishName {
+                       get {
+                               switch (NLS_id) {
+                               case 004:
+                                       return "Afghanistan";
+                               case 008:
+                                       return "Albania";
+                               case 012:
+                                       return "Algeria";
+                               case 016:
+                                       return "American Samoa";
+                               case 020:
+                                       return "Andorra";
+                               case 024:
+                                       return "Angola";
+                               case 660:
+                                       return "Anguilla";
+                               case 010:
+                                       return "Antarctica";
+                               case 028:
+                                       return "Antigua and Barbuda";
+                               case 032:
+                                       return "Argentina";
+                               case 051:
+                                       return "Armenia";
+                               case 533:
+                                       return "Aruba";
+                               case 036:
+                                       return "Australia";
+                               case 040:
+                                       return "Austria";
+                               case 031:
+                                       return "Azerbaijan";
+                               case 044:
+                                       return "Bahamas";
+                               case 048:
+                                       return "Bahrain";
+                               case 050:
+                                       return "Bangladesh";
+                               case 052:
+                                       return "Barbados";
+                               case 112:
+                                       return "Belarus";
+                               case 056:
+                                       return "Belgium";
+                               case 084:
+                                       return "Belize";
+                               case 204:
+                                       return "Benin";
+                               case 060:
+                                       return "Bermuda";
+                               case 064:
+                                       return "Bhutan";
+                               case 068:
+                                       return "Bolivia";
+                               case 070:
+                                       return "Bosnia and Herzegowina";
+                               case 072:
+                                       return "Botswana";
+                               case 074:
+                                       return "Bouvet Island";
+                               case 076:
+                                       return "Brazil";
+                               case 086:
+                                       return "British Indian Ocean Territory";
+                               case 096:
+                                       return "Brunei Darussalam";
+                               case 100:
+                                       return "Bulgaria";
+                               case 854:
+                                       return "Burkina Faso";
+                               case 108:
+                                       return "Burundi";
+                               case 116:
+                                       return "Cambodia";
+                               case 120:
+                                       return "Cameroon";
+                               case 124:
+                                       return "Canada";
+                               case 132:
+                                       return "Cape Verde";
+                               case 136:
+                                       return "Cayman Islands";
+                               case 140:
+                                       return "Central African Republic";
+                               case 148:
+                                       return "Chad";
+                               case 152:
+                                       return "Chile";
+                               case 156:
+                                       return "China";
+                               case 162:
+                                       return "Christmas Island";
+                               case 166:
+                                       return "Cocos (Keeling) Islands";
+                               case 170:
+                                       return "Colombia";
+                               case 174:
+                                       return "Comoros";
+                               case 178:
+                                       return "Congo";
+                               case 184:
+                                       return "Cook Islands";
+                               case 188:
+                                       return "Costa Rica";
+                               case 384:
+                                       return "Cote D'Ivoire";
+                               case 191:
+                                       return "Croatia (Local Name: Hrvatska)";
+                               case 192:
+                                       return "Cuba";
+                               case 196:
+                                       return "Cyprus";
+                               case 203:
+                                       return "Czech Republic";
+                               case 208:
+                                       return "Denmark";
+                               case 262:
+                                       return "Djibouti";
+                               case 212:
+                                       return "Dominica";
+                               case 214:
+                                       return "Dominican Republic";
+                               case 626:
+                                       return "East Timor";
+                               case 218:
+                                       return "Ecuador";
+                               case 818:
+                                       return "Egypt";
+                               case 222:
+                                       return "El Salvador";
+                               case 226:
+                                       return "Equatorial Guinea";
+                               case 232:
+                                       return "Eritrea";
+                               case 233:
+                                       return "Estonia";
+                               case 231:
+                                       return "Ethiopia";
+                               case 238:
+                                       return "Falkland Islands (Malvinas)";
+                               case 234:
+                                       return "Faroe Islands";
+                               case 242:
+                                       return "Fiji";
+                               case 246:
+                                       return "Finland";
+                               case 250:
+                                       return "France";
+                               case 249:
+                                       return "France, Metropolitan";
+                               case 254:
+                                       return "French Guiana";
+                               case 258:
+                                       return "French Polynesia";
+                               case 260:
+                                       return "French Southern Territories";
+                               case 266:
+                                       return "Gabon";
+                               case 270:
+                                       return "Gambia";
+                               case 268:
+                                       return "Georgia";
+                               case 276:
+                                       return "Germany";
+                               case 288:
+                                       return "Ghana";
+                               case 292:
+                                       return "Gibraltar";
+                               case 300:
+                                       return "Greece";
+                               case 304:
+                                       return "Greenland";
+                               case 308:
+                                       return "Grenada";
+                               case 312:
+                                       return "Guadeloupe";
+                               case 316:
+                                       return "Guam";
+                               case 320:
+                                       return "Guatemala";
+                               case 324:
+                                       return "Guinea";
+                               case 624:
+                                       return "Guinea-Bissau";
+                               case 328:
+                                       return "Guyana";
+                               case 332:
+                                       return "Haiti";
+                               case 334:
+                                       return "Heard and Mc Donald Islands";
+                               case 336:
+                                       return "Holy See (Vatican City State)";
+                               case 340:
+                                       return "Honduras";
+                               case 344:
+                                       return "Hong Kong";
+                               case 348:
+                                       return "Hungary";
+                               case 352:
+                                       return "Iceland";
+                               case 356:
+                                       return "India";
+                               case 360:
+                                       return "Indonesia";
+                               case 364:
+                                       return "Iran (Islamic Republic of)";
+                               case 368:
+                                       return "Iraq";
+                               case 372:
+                                       return "Ireland";
+                               case 376:
+                                       return "Israel";
+                               case 380:
+                                       return "Italy";
+                               case 388:
+                                       return "Jamaica";
+                               case 392:
+                                       return "Japan";
+                               case 400:
+                                       return "Jordan";
+                               case 398:
+                                       return "Kazakhstan";
+                               case 404:
+                                       return "Kenya";
+                               case 296:
+                                       return "Kiribati";
+                               case 408:
+                                       return "Korea, Democratic People's Republic of";
+                               case 410:
+                                       return "Korea, Republic of";
+                               case 414:
+                                       return "Kuwait";
+                               case 417:
+                                       return "Kyrgyzstan";
+                               case 418:
+                                       return "Lao People's Democratic Republic";
+                               case 428:
+                                       return "Latvia";
+                               case 422:
+                                       return "Lebanon";
+                               case 426:
+                                       return "Lesotho";
+                               case 430:
+                                       return "Liberia";
+                               case 434:
+                                       return "Libyan Arab Jamahiriya";
+                               case 438:
+                                       return "Liechtenstein";
+                               case 440:
+                                       return "Lithuania";
+                               case 442:
+                                       return "Luxembourg";
+                               case 446:
+                                       return "Macau";
+                               case 807:
+                                       return "Macedonia, The Former Yugoslav Republic of";
+                               case 450:
+                                       return "Madagascar";
+                               case 454:
+                                       return "Malawi";
+                               case 458:
+                                       return "Malaysia";
+                               case 462:
+                                       return "Maldives";
+                               case 466:
+                                       return "Mali";
+                               case 470:
+                                       return "Malta";
+                               case 584:
+                                       return "Marshall Islands";
+                               case 474:
+                                       return "Martinique";
+                               case 478:
+                                       return "Mauritania";
+                               case 480:
+                                       return "Mauritius";
+                               case 175:
+                                       return "Mayotte";
+                               case 484:
+                                       return "Mexico";
+                               case 583:
+                                       return "Micronesia, Federated States of";
+                               case 498:
+                                       return "Moldova, Republic of";
+                               case 492:
+                                       return "Monaco";
+                               case 496:
+                                       return "Mongolia";
+                               case 500:
+                                       return "Montserrat";
+                               case 504:
+                                       return "Morocco";
+                               case 508:
+                                       return "Mozambique";
+                               case 104:
+                                       return "Myanmar";
+                               case 516:
+                                       return "Namibia";
+                               case 520:
+                                       return "Nauru";
+                               case 524:
+                                       return "Nepal";
+                               case 528:
+                                       return "Netherlands";
+                               case 530:
+                                       return "Netherlands Antilles";
+                               case 540:
+                                       return "New Caledonia";
+                               case 554:
+                                       return "New Zealand";
+                               case 558:
+                                       return "Nicaragua";
+                               case 562:
+                                       return "Niger";
+                               case 566:
+                                       return "Nigeria";
+                               case 570:
+                                       return "Niue";
+                               case 574:
+                                       return "Norfolk Island";
+                               case 580:
+                                       return "Northern Mariana Islands";
+                               case 578:
+                                       return "Norway";
+                               case 512:
+                                       return "Oman";
+                               case 586:
+                                       return "Pakistan";
+                               case 585:
+                                       return "Palau";
+                               case 591:
+                                       return "Panama";
+                               case 598:
+                                       return "Papua New Guinea";
+                               case 600:
+                                       return "Paraguay";
+                               case 604:
+                                       return "Peru";
+                               case 608:
+                                       return "Philippines";
+                               case 612:
+                                       return "Pitcairn";
+                               case 616:
+                                       return "Poland";
+                               case 620:
+                                       return "Portugal";
+                               case 630:
+                                       return "Puerto Rico";
+                               case 634:
+                                       return "Qatar";
+                               case 638:
+                                       return "Reunion";
+                               case 642:
+                                       return "Romania";
+                               case 643:
+                                       return "Russian Federation";
+                               case 646:
+                                       return "Rwanda";
+                               case 659:
+                                       return "Saint Kitts and Nevis";
+                               case 662:
+                                       return "Saint Lucia";
+                               case 670:
+                                       return "Saint Vincent and The Grenadines";
+                               case 882:
+                                       return "Samoa";
+                               case 674:
+                                       return "San Marino";
+                               case 678:
+                                       return "Sao Tome and Principe";
+                               case 682:
+                                       return "Saudi Arabia";
+                               case 686:
+                                       return "Senegal";
+                               case 690:
+                                       return "Seychelles";
+                               case 694:
+                                       return "Sierra Leone";
+                               case 702:
+                                       return "Singapore";
+                               case 703:
+                                       return "Slovakia (Slovak Republic)";
+                               case 705:
+                                       return "Slovenia";
+                               case 090:
+                                       return "Solomon Islands";
+                               case 706:
+                                       return "Somalia";
+                               case 710:
+                                       return "South Africa";
+                               case 239:
+                                       return "South Georgia and The South Sandwich Islands";
+                               case 724:
+                                       return "Spain";
+                               case 144:
+                                       return "Sri Lanka";
+                               case 654:
+                                       return "St. Helena";
+                               case 666:
+                                       return "St. Pierre and Miquelon";
+                               case 736:
+                                       return "Sudan";
+                               case 740:
+                                       return "Suriname";
+                               case 744:
+                                       return "Svalbard and Jan Mayen Islands";
+                               case 748:
+                                       return "Swaziland";
+                               case 752:
+                                       return "Sweden";
+                               case 756:
+                                       return "Switzerland";
+                               case 760:
+                                       return "Syrian Arab Republic";
+                               case 158:
+                                       return "Taiwan, Province of China";
+                               case 762:
+                                       return "Tajikistan";
+                               case 834:
+                                       return "Tanzania, United Republic of";
+                               case 764:
+                                       return "Thailand";
+                               case 768:
+                                       return "Togo";
+                               case 772:
+                                       return "Tokelau";
+                               case 776:
+                                       return "Tonga";
+                               case 780:
+                                       return "Trinidad and Tobago";
+                               case 788:
+                                       return "Tunisia";
+                               case 792:
+                                       return "Turkey";
+                               case 795:
+                                       return "Turkmenistan";
+                               case 796:
+                                       return "Turks and Caicos Islands";
+                               case 798:
+                                       return "Tuvalu";
+                               case 800:
+                                       return "Uganda";
+                               case 804:
+                                       return "Ukraine";
+                               case 784:
+                                       return "United Arab Emirates";
+                               case 826:
+                                       return "United Kingdom";
+                               case 840:
+                                       return "United States";
+                               case 581:
+                                       return "United States Minor Outlying Islands";
+                               case 858:
+                                       return "Uruguay";
+                               case 860:
+                                       return "Uzbekistan";
+                               case 548:
+                                       return "Vanuatu";
+                               case 862:
+                                       return "Venezuela";
+                               case 704:
+                                       return "Viet Nam";
+                               case 092:
+                                       return "Virgin Islands (British)";
+                               case 850:
+                                       return "Virgin Islands (U.S.)";
+                               case 876:
+                                       return "Wallis and Futuna Islands";
+                               case 732:
+                                       return "Western Sahara";
+                               case 887:
+                                       return "Yemen";
+                               case 891:
+                                       return "Yugoslavia";
+                               case 180:
+                                       return "Zaire";
+                               case 894:
+                                       return "Zambia";
+                               case 716:
+                                       return "Zimbabwe";
+                               default:
+                                       throw new Exception ("This code should not be reached.");
+                               }
+                       }
                }
 
-                public virtual string CurrencySymbol {
+               public virtual bool IsMetric {
                        get {
                                switch (NLS_id) {
+                               case 203: // Czech Republic
+                                       return true;
+                               case 840: // United States
+                                       return false;
                                default:
-                                       throw new Exception ();
+                                       throw new Exception ("FIXME. Please define.");
                                }
                        }
                }
 
-                public override bool Equals(object value) {
+               public virtual string ISOCurrencySymbol {
+                       get {
+                               switch (NLS_id) {
+                               default:
+                                       throw new Exception ("This code should not be reached.");
+                               }
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string Name
+               {
+                       get {
+                               throw new NotImplementedException();
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string ThreeLetterISORegionName
+               {
+                       get {
+                               throw new NotImplementedException();
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string ThreeLetterWindowsRegionName
+               {
+                       get {
+                               throw new NotImplementedException();
+                       }
+               }
+               
+               [MonoTODO]
+               public virtual string TwoLetterISORegionName
+               {
+                       get {
+                               throw new NotImplementedException();
+                       }
+               }
+
+               //
+               // methods
+
+               public override bool Equals(object value) {
                        return value == this;
                }
 
-                public override int GetHashCode () {
+               public override int GetHashCode () {
                        return NLS_id.GetHashCode ();
                }
+
+               [MonoTODO]
+               public override string ToString()
+               {
+                       throw new NotImplementedException();
+               }
+               
        }
 
 }