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

en_GB {
    Version { "1.0" }
//    Duplicated in parent
//    Countries { 
//        US { "United States" }
//        GB { "United Kingdom" }
//        CA { "Canada" }
//        IE { "Ireland" }
//        AU { "Australia" }
//        NZ { "New Zealand" }
//    }
    CurrencyElements { 
        "\u00A3",
        "GBP",
        ".",
    }
    DateTimeElements:intvector {
        2,
        1,
    }
    DateTimePatterns { 
        "HH:mm:ss z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "dd MMMM yyyy",
        "dd MMMM yyyy",
        "dd-MMM-yyyy",
        "dd/MM/yy",
        "{1} {0}",
    }
//    Duplicated in parent
//    Languages { 
//        en { "English" }
//    }
    LocaleID:int { 0x0809 }
//    LocaleString { "en_GB" }
//    ShortCountry { "GBR" }
    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" 
    }
}
