// ***************************************************************************
// *
// *   Copyright (C) 1997-2004, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************

nl {
    Version { "2.0" }

    Countries { 
        Fallback{ "en"}
        //AD { "Andorra" }
        AE { "Verenigde Arabische Emiraten" }
        //AF { "Afghanistan" }
        AG { "Antigua en Barbuda" }
        //AI { "Anguilla" }
        AL { "Albani\u00EB" }
        AM { "Armeni\u00EB" }
        AN { "Nederlandse Antillen" }
        //AO { "Angola" }
        //AQ { "Antarctica" }
        AR { "Argentini\u00EB" }
        AS { "Amerikaans Samoa" }
        AT { "Oostenrijk" }
        AU { "Australi\u00EB" }
        //AW { "Aruba" }
        AZ { "Azerbeidzjan" }
        BA { "Bosni\u00EB Herzegovina" }
        //BB { "Barbados" }
        //BD { "Bangladesh" }
        BE { "Belgi\u00EB" }
        //BF { "Burkina Faso" }
        BG { "Bulgarije" }
        BH { "Bahrein" }
        //BI { "Burundi" }
        //BJ { "Benin" }
        //BM { "Bermuda" }
        BN { "Brunei Darussalam" }
        //BO { "Bolivia" }
        BR { "Brazili\u00EB" }
        BS { "Bahama's" }
        //BT { "Bhutan" }
        BV { "Bouveteiland" }
        //BW { "Botswana" }
        BY { "Wit-Rusland" }
        //BZ { "Belize" }
        //CA { "Canada" }
        CC { "Cocoseilanden" }
        CD { "Congo, Democratische Republiek" }
        CF { "Centraal-Afrikaanse Republiek" }
        //CG { "Congo" }
        CH { "Zwitserland" }
        CI { "Ivoorkust" }
        CK { "Cookeilanden" }
        CL { "Chili" }
        CM { "Kameroen" }
        //CN { "China" }
        //CO { "Colombia" }
        //CR { "Costa Rica" }
        //CU { "Cuba" }
        CV { "Kaapverdi\u00EB" }
        CX { "Christmaseiland" }
        //CY { "Cyprus" }
        CZ { "Tsjechi\u00EB" }
        DE { "Duitsland" }
        //DJ { "Djibouti" }
        DK { "Denemarken" }
        //DM { "Dominica" }
        DO { "Dominicaanse Republiek" }
        DZ { "Algerije" }
        //EC { "Ecuador" }
        EE { "Estland" }
        EG { "Egypte" }
        EH { "West-Sahara" }
        //ER { "Eritrea" }
        ES { "Spanje" }
        ET { "Ethiopi\u00EB" }
        //FI { "Finland" }
        //FJ { "Fiji" }
        FK { "Falklandeilanden" }
        FM { "Micronesia, Federale Staten van" }
        FO { "Faer\u00F6er" }
        FR { "Frankrijk" }
        //GA { "Gabon" }
        GB { "Verenigd Koninkrijk" }
        //GD { "Grenada" }
        GE { "Georgi\u00EB" }
        GF { "Frans-Guyana" }
        //GH { "Ghana" }
        //GI { "Gibraltar" }
        GL { "Groenland" }
        //GM { "Gambia" }
        //GN { "Guinea" }
        //GP { "Guadeloupe" }
        GQ { "Equatoriaal-Guinea" }
        GR { "Griekenland" }
        GS { "Zuid-Georgi\u00EB en Zuidelijke Sandwicheilanden" }
        //GT { "Guatemala" }
        //GU { "Guam" }
        GW { "Guinee-Bissau" }
        //GY { "Guyana" }
        HK { "Hongkong S.A.R. van China" }
        HM { "Heardeiland en McDonaldeiland" }
        //HN { "Honduras" }
        HR { "Kroati\u00EB" }
        HT { "Ha\u00EFti" }
        HU { "Hongarije" }
        ID { "Indonesi\u00EB" }
        IE { "Ierland" }
        IL { "Isra\u00EBl" }
        //IN { "India" }
        IO { "Brits Territorium in de Indische Oceaan" }
        IQ { "Irak" }
        //IR { "Iran, Islamitische Republiek" }
        IS { "IJsland" }
        IT { "Itali\u00EB" }
        //JM { "Jamaica" }
        JO { "Jordani\u00EB" }
        //JP { "Japan" }
        KE { "Kenia" }
        KG { "Kirgizstan" }
        KH { "Cambodja" }
        //KI { "Kiribati" }
        KM { "Comoren" }
        KN { "Saint Kitts en Nevis" }
        KP { "Korea, Noord" }    // alternate name { "Korea, Democratische Volksrepubliek" }
        KR { "Korea, Zuid" }    // alternate name { "Korea, Republiek" }
        KW { "Koeweit" }
        KY { "Caymaneilanden" }
        KZ { "Kazakstan" }
        //LA { "Laos" }
        LB { "Libanon" }
        //LC { "Saint Lucia" }
        //LI { "Liechtenstein" }
        //LK { "Sri Lanka" }
        //LR { "Liberia" }
        //LS { "Lesotho" }
        LT { "Litouwen" }
        LU { "Luxemburg" }
        LV { "Letland" }
        LY { "Libi\u00EB" }
        MA { "Marokko" }
        //MC { "Monaco" }
        MD { "Moldova, Republiek" }
        MG { "Madagaskar" }
        MH { "Marshalleilanden" }
        MK { "Macedoni\u00EB, Republiek" }
        //ML { "Mali" }
        //MM { "Myanmar" }
        MN { "Mongoli\u00EB" }
        MO { "Macao S.A.R. van China" }
        MP { "Noordelijke Marianeneilanden" }
        //MQ { "Martinique" }
        MR { "Mauritani\u00EB" }
        //MS { "Montserrat" }
        //MT { "Malta" }
        //MU { "Mauritius" }
        MV { "Malediven" }
        //MW { "Malawi" }
        //MX { "Mexico" }
        MY { "Maleisi\u00EB" }
        //MZ { "Mozambique" }
        NA { "Namibi\u00EB" }
        NC { "Nieuw-Caledoni\u00EB" }
        //NE { "Niger" }
        NF { "Norfolkeiland" }
        //NG { "Nigeria" }
        //NI { "Nicaragua" }
        NL { "Nederland" }
        NO { "Noorwegen" }
        //NP { "Nepal" }
        //NR { "Nauru" }
        //NU { "Niue" }
        NZ { "Nieuw-Zeeland" }
        //OM { "Oman" }
        //PA { "Panama" }
        //PE { "Peru" }
        PF { "Frans-Polynesi\u00EB" }
        PG { "Papoea-Nieuw-Guinea" }
        PH { "Filippijnen" }
        //PK { "Pakistan" }
        PL { "Polen" }
        PM { "Saint Pierre en Miquelon" }
        //PN { "Pitcairn" }
        //PR { "Puerto Rico" }
        PS { "Palestijns Gebied" }
        //PT { "Portugal" }
        //PW { "Palau" }
        //PY { "Paraguay" }
        QA { "Katar" }
        //RE { "R\u00E9union" }
        RO { "Roemeni\u00EB" }
        RU { "Russische Federatie" }
        //RW { "Rwanda" }
        SA { "Saoedi-Arabi\u00EB" }
        SB { "Salomonseilanden" }
        SC { "Seychellen" }
        SD { "Soedan" }
        SE { "Zweden" }
        //SG { "Singapore" }
        //SH { "Saint Helena" }
        SI { "Sloveni\u00EB" }
        SJ { "Svalbard en Jan Mayen" }
        SK { "Slowakije" }
        //SL { "Sierra Leone" }
        //SM { "San Marino" }
        //SN { "Senegal" }
        SO { "Somali\u00EB" }
        //SR { "Suriname" }
        ST { "Sao Tom\u00E9 en Principe" }
        //SV { "El Salvador" }
        SY { "Syri\u00EB" }
        //SZ { "Swaziland" }
        TC { "Turks- en Caicoseilanden" }
        TD { "Tsjaad" }
        TF { "Franse Gebieden in de zuidelijke Indische Oceaan" }
        //TG { "Togo" }
        //TH { "Thailand" }
        TJ { "Tadzjikistan" }
        //TK { "Tokelau" }
        TL { "Oost-Timor" }
        //TM { "Turkmenistan" }
        TN { "Tunesi\u00EB" }
        //TO { "Tonga" }
        TR { "Turkije" }
        TT { "Trinidad en Tobago" }
        //TV { "Tuvalu" }
        //TW { "Taiwan" }
        //TZ { "Tanzania" }
        UA { "Oekra\u00EFne" }
        UG { "Oeganda" }
        UM { "Amerikaanse ondergeschikte afgelegen eilanden" }
        US { "Verenigde Staten" }
        //UY { "Uruguay" }
        UZ { "Oezbekistan" }
        VA { "Vaticaanstad" }
        VC { "Saint Vincent en de Grenadines" }
        //VE { "Venezuela" }
        VG { "Britse Maagdeneilanden" }
        VI { "Amerikaanse Maagdeneilanden" }
        //VN { "Vietnam" }
        //VU { "Vanuatu" }
        WF { "Wallis en Futuna" }
        //WS { "Samoa" }
        YE { "Jemen" }
        //YT { "Mayotte" }
        YU { "Joegoslavi\u00EB" }
        ZA { "Zuid-Afrika" }
        //ZM { "Zambia" }
        //ZW { "Zimbabwe" }
    }
    // Currency display names
    Currencies {
        BEF { "BF", "BEF" }
        NLG { "fl", "NLG" }
    }

    ExemplarCharacters { "[a-z\u00e1\u00e9\u00ed\u00f3\u00fa\u00e4\u00eb\u00ef\u00f6\u00fc\u0133]" }
    Languages { 
        //af  { "Afrikaans" }
        am { "Amhaars" }
        ar { "Arabisch" }
        be { "Wit-Russisch" }
        bg { "Bulgaars" }
        bn { "Bengaals" }
        ca { "Catalaans" }
        cs { "Tsjechisch" }
        da { "Deens" }
        de { "Duits" }
        el { "Grieks" }
        en { "Engels" }
        //eo  { "Esperanto" }
        es { "Spaans" }
        et { "Estlands" }
        eu { "Baskisch" }
        fa { "Perzisch" }
        fi { "Fins" }
        fo { "Faer\u00f6ers" }
        fr { "Frans" }
        ga { "Iers" }
        gl { "Galicisch" }
        //gu  { "Gujarati" }
        //gv  { "Manx" }
        haw { "Hawaiiaans" }
        he { "Hebreeuws" }
        //hi  { "Hindi" }
        hr { "Kroatisch" }
        hu { "Hongaars" }
        hy { "Armeens" }
        id { "Indonesisch" }
        is { "IJslands" }
        it { "Italiaans" }
        //iu  { "Inuktitut" }
        ja { "Japans" }
        //kl  { "Kalaallisut" }
        //kn  { "Kannada" }
        ko { "Koreaans" }
        //kw  { "Cornish" }
        lt { "Litouws" }
        lv { "Letlands" }
        mk { "Macedonisch" }
        //mr  { "Marathi" }
        mt { "Maltees" }
        nb { "Noors - Bokm\u00e5l" }
        nl { "Nederlands" }
        nn { "Noors - Nynorsk" }
        no { "Noors" }
        //om  { "Oromo" }
        pl { "Pools" }
        pt { "Portugees" }
        ro { "Roemeens" }
        ru { "Russisch" }
        sh { "Servokroatisch" }
        sk { "Slowaaks" }
        sl { "Sloveens" }
        //so  { "Somali" }
        sq { "Albanees" }
        sr { "Servisch" }
        sv { "Zweeds" }
        //sw  { "Swahili" }
        //ta  { "Tamil" }
        //th  { "Thai" }
        //ti  { "Tigrinya" }
        tr { "Turks" }
        uk { "Oekra\u00efens" }
        vi { "Vietnamees" }
        zh { "Chinees" }
        //zh_cn { "Chinees (Vereenvoudigd)" }
        //zh_tw { "Chinees (Traditioneel)" }
    }
    LocaleScript {
        "Latn",  // ISO 15924 Name 
    }
    NumberElements { 
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ",",
        "+",
    }



    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------
//     * Spellout rules for Dutch
    // can someone supply me with information on negatives and decimals?
    SpelloutRules {
        "-x: min >>;\n"
        "x.x: << komma >>;\n"
        "nul; een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
        "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
        "zeventien; achtien; negentien;\n"
        "20: [>> en ]twintig;\n"
        "30: [>> en ]dertig;\n"
        "40: [>> en ]veertig;\n"
        "50: [>> en ]vijftig;\n"
        "60: [>> en ]zestig;\n"
        "70: [>> en ]zeventig;\n"
        "80: [>> en ]tachtig;\n"
        "90: [>> en ]negentig;\n"
        "100: << honderd[ >>];\n"
        "1000: << duizend[ >>];\n"
        "1,000,000: << miljoen[ >>];\n"
        "1,000,000,000: << biljoen[ >>];\n"
        "1,000,000,000,000: << triljoen[ >>];\n"
        "1,000,000,000,000,000: =#,##0="
    }
    Keys{
        calendar { "Kalender" }
        collation { "Soorten" }
        currency {"Muntsoort"}
    }
    Types{
        collation {
           traditional { "Traditioneel Soorten" }
        }
    }
    Variants{
        REVISED { "Gewijzigd" }
    }
    calendar{
        islamic{
            // Islamic calendar
            eras:array { 
                "Sa'na Hizjria"
            }
            monthNames{
                format{
                    abbreviated:alias{
                        "nl/calendar/islamic/monthNames/format/wide"
                    }
                    wide:array {
                        "Moeharram",            // Muharram
                        "Safar",                // Safar
                        "Rabi'a al awal",      // Rabi' al-awwal
                        "Rabi'a al thani",      // Rabi' al-thani
                        "Joemad'al awal",       // Jumada al-awwal
                        "Joemad'al thani",      // Jumada al-thani
                        "Rajab",                // Rajab
                        "Sja'aban",             // Sha'ban
                        "Ramadan",              // Ramadan
                        "Sjawal",               // Shawwal
                        "Doe al ka'aba",        // Dhu al-Qi'dah
                        "Doe al hizja",         // Dhu al-Hijjah
                    }
                }
            }
        }
        islamic-civil:alias{
            "nl/calendar/islamic"
        }
        gregorian{
            DateTimeElements:intvector { 
                2,
                4,
            }
            DateTimePatterns{
                "H:mm:ss' uur' z",
                "H:mm:ss z",
                "H:mm:ss",
                "H:mm",
                "EEEE d MMMM yyyy",
                "d MMMM yyyy",
                "d-MMM-yyyy",
                "d-M-yy",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "zo",
                        "ma",
                        "di",
                        "wo",
                        "do",
                        "vr",
                        "za",
                    }
                    narrow{
		                "Z",
		                "M",
		                "D",
		                "W",
		                "D",
		                "V",
		                "Z",
                    }
                    wide{
                        "zondag",
                        "maandag",
                        "dinsdag",
                        "woensdag",
                        "donderdag",
                        "vrijdag",
                        "zaterdag",
                    }
                }
            }
            eras{
                "v. Chr.",  // voor Christus
                "n. Chr.",  // na Christus
            }
            monthNames{
                format{
                    abbreviated{
                        "jan",
                        "feb",
                        "mrt",
                        "apr",
                        "mei",
                        "jun",
                        "jul",
                        "aug",
                        "sep",
                        "okt",
                        "nov",
                        "dec",
                    }
                    narrow{
		                "J",
		                "F",
		                "M",
		                "A",
		                "M",
		                "J",
		                "J",
		                "A",
		                "S",
		                "O",
		                "N",
		                "D",
                    }
                    wide{
                        "januari",
                        "februari",
                        "maart",
                        "april",
                        "mei",
                        "juni",
                        "juli",
                        "augustus",
                        "september",
                        "oktober",
                        "november",
                        "december",
                    }
                }
            }
        }
        hebrew{
            monthNames{
                format{
                    abbreviated:alias{
                        "nl/calendar/hebrew/monthNames/format/wide"
                    }
                    wide{                
                        "Tisjrie",      // Tishri
                        "Chesjwan",     // Heshvan
                        "Kislev",       // Kislev
                        "Tevet",        // Tevet
                        "Sjevat",       // Shevat
                        "Adar",         // Adar I
                        "Adar B",       // Adar
                        "Nisan",        // Nisan
                        "Ijar",         // Iyar
                        "Sivan",        // Sivan
                        "Tammoez",      // Tamuz
                        "Av",           // Av
                        "Elloel",       // Elul
                    }
                }
            }
        }
    }
}
