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

nl {
    Countries { 
        NL { "Nederland" }
        BE { "Belgi\u00EB" }
    }
    DateTimeElements { 
            "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-yy",
            "d-M-yy",
            "{1} {0}",
    }
    DayAbbreviations { 
            "zo",
            "ma",
            "di",
            "wo",
            "do",
            "vr",
            "za",
    }
    DayNames { 
            "zondag",
            "maandag",
            "dinsdag",
            "woensdag",
            "donderdag",
            "vrijdag",
            "zaterdag",
    }
    Languages { 
        nl { "Nederlands" }
    }
    LocaleID { "13" }
    LocaleString { "nl" }
    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",
    }
    ShortLanguage { "nld" }
    zoneStrings { 
        {
                "Africa/Casablanca",
                "GMT",
                "GMT",
                "GMT",
                "GMT",
        }
    }
    LocaleScript{ 
                "Latn",  // ISO 15924 Name 
    }

    //------------------------------------------------------------
    // 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"
            "(zero?); 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: =#,##0="
    }
}
