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

en {
    NumberPatterns { 
            "#,##0.###;-#,##0.###",
            "\u00A4#,##0.00;-\u00A4#,##0.00",
            "#,##0%",
    }

    // Format for the display name of a Transliterator.
    // This is the English form of this resource.
    TransliteratorNamePattern { "{0,choice,0#|1#{1}|2#{1} to {2}}" }

    // Transliterator display names
    "%Translit%Hex"         { "Hex Escape" }
    "%Translit%UnicodeName" { "Unicode Name" }
    "%Translit%UnicodeChar" { "Unicode Character" }

    zoneStrings { 
        {
                "PST",
                "Pacific Standard Time",
                "PST",
                "Pacific Daylight Time",
                "PDT",
        }
        {
                "America/Los_Angeles",
                "Pacific Standard Time",
                "PST",
                "Pacific Daylight Time",
                "PDT",
        }
        {
                "MST",
                "Mountain Standard Time",
                "MST",
                "Mountain Daylight Time",
                "MDT",
        }
        {
                "America/Denver",
                "Mountain Standard Time",
                "MST",
                "Mountain Daylight Time",
                "MDT",
        }
        {
                "PNT",
                "Mountain Standard Time",
                "MST",
                "Mountain Standard Time",
                "MST",
        }
        {
                "America/Phoenix",
                "Mountain Standard Time",
                "MST",
                "Mountain Standard Time",
                "MST",
        }
        {
                "CST",
                "Central Standard Time",
                "CST",
                "Central Daylight Time",
                "CDT",
        }
        {
                "America/Chicago",
                "Central Standard Time",
                "CST",
                "Central Daylight Time",
                "CDT",
        }
        {
                "EST",
                "Eastern Standard Time",
                "EST",
                "Eastern Daylight Time",
                "EDT",
        }
        {
                "America/New_York",
                "Eastern Standard Time",
                "EST",
                "Eastern Daylight Time",
                "EDT",
        }
        {
                "IET",
                "Eastern Standard Time",
                "EST",
                "Eastern Standard Time",
                "EST",
        }
        {
                "America/Indianapolis",
                "Eastern Standard Time",
                "EST",
                "Eastern Standard Time",
                "EST",
        }
        {
                "HST",
                "Hawaii Standard Time",
                "HST",
                "Hawaii Standard Time",
                "HST",
        }
        {
                "Pacific/Honolulu",
                "Hawaii Standard Time",
                "HST",
                "Hawaii Standard Time",
                "HST",
        }
        {
                "AST",
                "Alaska Standard Time",
                "AKST",
                "Alaska Daylight Time",
                "AKDT",
        }
        {
                "America/Anchorage",
                "Alaska Standard Time",
                "AKST",
                "Alaska Daylight Time",
                "AKDT",
        }
        {
                "America/Halifax",
                "Atlantic Standard Time",
                "AST",
                "Atlantic Daylight Time",
                "ADT",
        }
        {
                "CNT",
                "Newfoundland Standard Time",
                "NST",
                "Newfoundland Daylight Time",
                "NDT",
        }
        {
                "America/St_Johns",
                "Newfoundland Standard Time",
                "NST",
                "Newfoundland Daylight Time",
                "NDT",
        }
        {
                "ECT",
                "Central European Standard Time",
                "CET",
                "Central European Daylight Time",
                "CEST",
        }
        {
                "Europe/Paris",
                "Central European Standard Time",
                "CET",
                "Central European Daylight Time",
                "CEST",
        }
        {
                "GMT",
                "Greenwich Mean Time",
                "GMT",
                "Greenwich Mean Time",
                "GMT",
        }
        {
                "Africa/Casablanca",
                "Greenwich Mean Time",
                "GMT",
                "Greenwich Mean Time",
                "GMT",
        }
        {
                "Asia/Jerusalem",
                "Israel Standard Time",
                "IST",
                "Israel Daylight Time",
                "IDT",
        }
        {
                "JST",
                "Japan Standard Time",
                "JST",
                "Japan Standard Time",
                "JST",
        }
        {
                "Asia/Tokyo",
                "Japan Standard Time",
                "JST",
                "Japan Standard Time",
                "JST",
        }
        {
                "Europe/Bucharest",
                "Eastern European Standard Time",
                "EET",
                "Eastern European Daylight Time",
                "EEST",
        }
        {
                "CTT",
                "China Standard Time",
                "CST",
                "China Standard Time",
                "CDT",
        }
        {
                "Asia/Shanghai",
                "China Standard Time",
                "CST",
                "China Standard Time",
                "CDT",
        }
    }
    LocaleID { "09" }
    LocaleScript{ 
                "Latn",  // ISO 15924 Name 
    }

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

//         * Spellout rules for U.S. English.  This rule set has two variants:
//         * %simplified is a set of rules showing the simple method of spelling
//         * out numbers in English: 289 is formatted as "two hundred eighty-nine".
//         * %default uses a more complicated algorithm to format
//         * numbers in a more natural way: 289 is formatted as "two hundred AND
//         * eighty-nine" and commas are inserted between the thousands groups for
//         * values above 100,000.

     SpelloutRules {
            // This rule set shows the normal simple formatting rules for English
            "%simplified:\n"
                   // negative number rule.  This rule is used to format negative
                   // numbers.  The result of formatting the number's absolute
                   // value is placed where the >> is.
            "    -x: minus >>;\n"
                   // faction rule.  This rule is used for formatting numbers
                   // with fractional parts.  The result of formatting the
                   // number's integral part is substituted for the <<, and
                   // the result of formatting the number's fractional part
                   // (one digit at a time, e.g., 0.123 is "zero point one two
                   // three") replaces the >>.
            "    x.x: << point >>;\n"
                   // the rules for the values from 0 to 19 are simply the
                   // words for those numbers
            "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
            "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
            "        seventeen; eighteen; nineteen;\n"
                   // beginning at 20, we use the >> to mark the position where
                   // the result of formatting the number's ones digit.  Thus,
                   // we only need a new rule at every multiple of 10.  Text in
                   // backets is omitted if the value being formatted is an
                   // even multiple of 10.
            "    20: twenty[->>];\n"
            "    30: thirty[->>];\n"
            "    40: forty[->>];\n"
            "    50: fifty[->>];\n"
            "    60: sixty[->>];\n"
            "    70: seventy[->>];\n"
            "    80: eighty[->>];\n"
            "    90: ninety[->>];\n"
                   // beginning at 100, we can use << to mark the position where
                   // the result of formatting the multiple of 100 is to be
                   // inserted.  Notice also that the meaning of >> has shifted:
                   // here, it refers to both the ones place and the tens place.
                   // The meanings of the << and >> tokens depend on the base value
                   // of the rule.  A rule's divisor is (usually) the highest
                   // power of 10 that is less than or equal to the rule's base
                   // value.  The value being formatted is divided by the rule's
                   // divisor, and the integral quotient is used to get the text
                   // for <<, while the remainder is used to produce the text
                   // for >>.  Again, text in brackets is omitted if the value
                   // being formatted is an even multiple of the rule's divisor
                   // (in this case, an even multiple of 100)
            "    100: << hundred[ >>];\n"
                   // The rules for the higher numbers work the same way as the
                   // rule for 100: Again, the << and >> tokens depend on the
                   // rule's divisor, which for all these rules is also the rule's
                   // base value.  To group by thousand, we simply don't have any
                   // rules between 1,000 and 1,000,000.
            "    1000: << thousand[ >>];\n"
            "    1,000,000: << million[ >>];\n"
            "    1,000,000,000: << billion[ >>];\n"
            "    1,000,000,000,000: << trillion[ >>];\n"
                   // overflow rule.  This rule specifies that values of a
                   // quadrillion or more are shown in numerals rather than words.
                   // The == token means to format (with new rules) the value
                   // being formatted by this rule and place the result where
                   // the == is.  The #,##0 inside the == signs is a
                   // DecimalFormat pattern.  It specifies that the value should
                   // be formatted with a DecimalFormat object, and that it
                   // should be formatted with no decimal places, at least one
                   // digit, and a thousands separator.
            "    1,000,000,000,000,000: =#,##0=;\n"

            // %default is a more elaborate form of %simplified;  It is basically
            // the same, except that it introduces "and" before the ones digit
            // when appropriate (basically, between the tens and ones digits) and
            // separates the thousands groups with commas in values over 100,000.
            "%default:\n"
                   // negative-number and fraction rules.  These are the same
                   // as those for %simplified, but have to be stated here too
                   // because this is an entry point
            "    -x: minus >>;\n"
            "    x.x: << point >>;\n"
                   // just use %simplified for values below 100
            "    =%simplified=;\n"
                   // for values from 100 to 9,999 use %%and to decide whether or
                   // not to interpose the "and"
            "    100: << hundred[ >%%and>];\n"
            "    1000: << thousand[ >%%and>];\n"
                   // for values of 100,000 and up, use %%commas to interpose the
                   // commas in the right places (and also to interpose the "and")
            "    100,000>>: << thousand[>%%commas>];\n"
            "    1,000,000: << million[>%%commas>];\n"
            "    1,000,000,000: << billion[>%%commas>];\n"
            "    1,000,000,000,000: << trillion[>%%commas>];\n"
            "    1,000,000,000,000,000: =#,##0=;\n"
            // if the value passed to this rule set is greater than 100, don't
            // add the "and"; if it's less than 100, add "and" before the last
            // digits
            "%%and:\n"
            "    and =%default=;\n"
            "    100: =%default=;\n"
            // this rule set is used to place the commas
            "%%commas:\n"
                   // for values below 100, add "and" (the apostrophe at the
                   // beginning is ignored, but causes the space that follows it
                   // to be significant: this is necessary because the rules
                   // calling %%commas don't put a space before it)
            "    ' and =%default=;\n"
                   // put a comma after the thousands (or whatever preceded the
                   // hundreds)
            "    100: , =%default=;\n"
                   // put a comma after the millions (or whatever precedes the
                   // thousands)
            "    1000: , <%default< thousand, >%default>;\n"
                   // and so on...
            "    1,000,000: , =%default=;"
            // %%lenient-parse isn't really a set of number formatting rules;
            // it's a set of collation rules.  Lenient-parse mode uses a Collator
            // object to compare fragments of the text being parsed to the text
            // in the rules, allowing more leeway in the matching text.  This set
            // of rules tells the formatter to ignore commas when parsing (it
            // already ignores spaces, which is why we refer to the space; it also
            // ignores hyphens, making "twenty one" and "twenty-one" parse
            // identically)
            "%%lenient-parse:\n"
            //            "    & ' ' , ',' ;\n"
            "   &\u0000 << ' ' << ',' << '-'; \n"
    }


//         * This rule set adds an English ordinal abbreviation to the end of a
//         * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
//         * this rule set.  To parse, use DecimalFormat on the numeral.
    OrdinalRules {
            // this rule set formats the numeral and calls %%abbrev to
            // supply the abbreviation
            "%main:\n"
            "    =#,##0==%%abbrev=;\n"
            // this rule set supplies the abbreviation
            "%%abbrev:\n"
                   // the abbreviations.  Everything from 4 to 19 ends in "th"
            "    th; st; nd; rd; th;\n"
                   // at 20, we begin repeating the cycle every 10 (13 is "13th",
                   // but 23 and 33 are "23rd" and "33rd")  We do this by
                   // ignoring all bug the ones digit in selecting the abbreviation
            "    20: >>;\n"
                   // at 100, we repeat the whole cycle by considering only the
                   // tens and ones digits in picking an abbreviation
            "    100: >>;\n"
    }

//         * This rule set formats a number of seconds in sexagesimal notation
//         * (i.e., hours, minutes, and seconds).  %with-words formats it with
//         * words (3,740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
//         * formats it entirely in numerals (3,740 is "1:02:20").
    DurationRules {
            // main rule set for formatting with words
            "%with-words:\n"
                   // take care of singular and plural forms of "second"
            "    0 seconds; 1 second; =0= seconds;\n"
                   // use %%min to format values greater than 60 seconds
            "    60/60: <%%min<[, >>];\n"
                   // use %%hr to format values greater than 3,600 seconds
                   // (the ">>>" below causes us to see the number of minutes
                   // when when there are zero minutes)
            "    3600/60: <%%hr<[, >>>];\n"
            // this rule set takes care of the singular and plural forms
            // of "minute"
            "%%min:\n"
            "    0 minutes; 1 minute; =0= minutes;\n"
            // this rule set takes care of the singular and plural forms
            // of "hour"
            "%%hr:\n"
            "    0 hours; 1 hour; =0= hours;\n"

            // main rule set for formatting in numerals
            "%in-numerals:\n"
                   // values below 60 seconds are shown with "sec."
            "    =0= sec.;\n"
                   // higher values are shown with colons: %%min-sec is used for
                   // values below 3,600 seconds...
            "    60: =%%min-sec=;\n"
                   // ...and %%hr-min-sec is used for values of 3,600 seconds
                   // and above
            "    3600: =%%hr-min-sec=;\n"
            // this rule causes values of less than 10 minutes to show without
            // a leading zero
            "%%min-sec:\n"
            "    0: :=00=;\n"
            "    60/60: <0<>>;\n"
            // this rule set is used for values of 3,600 or more.  Minutes are always
            // shown, and always shown with two digits
            "%%hr-min-sec:\n"
            "    0: :=00=;\n"
            "    60/60: <00<>>;\n"
            "    3600/60: <#,##0<:>>>;\n"
            // the lenient-parse rules allow several different characters to be used
            // as delimiters between hours, minutes, and seconds
            "%%lenient-parse:\n"
            "    & ':' = '.' = ' ' = '-';\n" 
    }
}
