// ***************************************************************************
// *
// *   Copyright (C) 1997-2003, 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" }
    }
    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}",
    }
    DayAbbreviations { 
        "zo",
        "ma",
        "di",
        "wo",
        "do",
        "vr",
        "za",
    }
    DayNames { 
        "zondag",
        "maandag",
        "dinsdag",
        "woensdag",
        "donderdag",
        "vrijdag",
        "zaterdag",
    }
    Eras { 
        "v. Chr.",  // voor Christus
        "n. Chr.",  // na Christus
    }
    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 
    }
    MonthAbbreviations { 
        "jan",
        "feb",
        "mrt",
        "apr",
        "mei",
        "jun",
        "jul",
        "aug",
        "sep",
        "okt",
        "nov",
        "dec",
    }
    MonthNames { 
        "januari",
        "februari",
        "maart",
        "april",
        "mei",
        "juni",
        "juli",
        "augustus",
        "september",
        "oktober",
        "november",
        "december",
    }
    NumberElements { 
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ",",
        "+",
    }

        // International Calendars Data.
    // NOTE (ICU 2.6) - the format of this data WILL CHANGE in future releases.  
    // Islamic calendar
    Eras_islamic:array { 
        "Sa'na Hizjria"
    }

    MonthNames_islamic: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
    }
    MonthAbbreviations_islamic:alias {  // same as MonthNames (no data)
        "nl/MonthNames_islamic"
    }   
    // Civil is identical other than in calculations
    Eras_islamic-civil:alias {
        "nl/Eras_islamic"
    }
    MonthNames_islamic-civil:alias {
        "nl/MonthNames_islamic"
    }
    MonthAbbreviations_islamic-civil:alias {
        "nl/MonthAbbreviations_islamic"
    }
    MonthNames_hebrew {
        "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
    }
    MonthAbbreviations_hebrew:alias {
       "nl/MonthNames_hebrew" // no data
    }

    //------------------------------------------------------------
    // 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{
        calendar{
           traditional { "Traditioneel Soorten" }
        }
        collation{
           traditional { "Traditioneel Kalendar" }
        }
    }
    Variants{
        REVISED { "Gewijzigd" }
    }
}
