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

en_GB {
    Version { "2.0" }
    zoneStrings {
        {
            "Europe/London",
            "Greenwich Mean Time",
            "GMT",
            "British Summer Time",
            "BST",
        }
    }

    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

//         * Spellout rules for U.K. English.  U.K. English has one significant
//         * difference from U.S. English: the names for values of 1,000,000,000
//         * and higher.  In American English, each successive "-illion" is 1,000
//         * times greater than the preceding one: 1,000,000,000 is "one billion"
//         * and 1,000,000,000,000 is "one trillion."  In British English, each
//         * successive "-illion" is one million times greater than the one before:
//         * "one billion" is 1,000,000,000,000 (or what Americans would call a
//         * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
//         * 1,000,000,000 in British English is "one thousand million."  (This
//         * value is sometimes called a "milliard," but this word seems to have
//         * fallen into disuse.)

    // Could someone please correct me if I'm wrong about "milliard" falling
    // into disuse, or have missed any other details of how large numbers
    // are rendered.  Also, could someone please provide me with information
    // on which other English-speaking countries use which system?  Right now,
    // I'm assuming that the U.S. system is used in Canada and that all the
    // other English-speaking countries follow the British system.  Can
    // someone out there confirm this?

    SpelloutRules {
        "%simplified:\n"
            "-x: minus >>;\n"
            "x.x: << point >>;\n"
            "zero; one; two; three; four; five; six; seven; eight; nine;\n"
            "ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
            "    seventeen; eighteen; nineteen;\n"
            "20: twenty[->>];\n"
            "30: thirty[->>];\n"
            "40: forty[->>];\n"
            "50: fifty[->>];\n"
            "60: sixty[->>];\n"
            "70: seventy[->>];\n"
            "80: eighty[->>];\n"
            "90: ninety[->>];\n"
            "100: << hundred[ >>];\n"
            "1000: << thousand[ >>];\n"
            "1,000,000: << million[ >>];\n"
            "1,000,000,000,000: << billion[ >>];\n"
            "1,000,000,000,000,000: =#,##0=;\n"
        "%default:\n"
            "-x: minus >>;\n"
            "x.x: << point >>;\n"
            "=%simplified=;\n"
            "100: << hundred[ >%%and>];\n"
            "1000: << thousand[ >%%and>];\n"
            "100,000>>: << thousand[>%%commas>];\n"
            "1,000,000: << million[>%%commas>];\n"
            "1,000,000,000,000: << billion[>%%commas>];\n"
            "1,000,000,000,000,000: =#,##0=;\n"
        "%%and:\n"
            "and =%default=;\n"
            "100: =%default=;\n"
        "%%commas:\n"
            "' and =%default=;\n"
            "100: , =%default=;\n"
            "1000: , <%default< thousand, >%default>;\n"
            "1,000,000: , =%default=;"
        "%%lenient-parse:\n"
            "& ' ' , ',' ;\n" 
    }
    calendar{
        gregorian{
            DateTimeElements:intvector {
                2,
                1,
            }
            DateTimePatterns{
                "HH:mm:ss z",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, d MMMM yyyy",
                "d MMMM yyyy",
                "d MMM yyyy",
                "dd/MM/yyyy",
                "{1} {0}",
            }
        }
    }
}
