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

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

    // 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}}" }

    zoneStrings { 
        {
            "PST",
            "Pacific Standard Time",
            "PST",
            "Pacific Daylight Time",
            "PDT",
            "Los Angeles",
        }
        {
            "America/Los_Angeles",
            "Pacific Standard Time",
            "PST",
            "Pacific Daylight Time",
            "PDT",
            "Los Angeles",
        }
        {
            "MST",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Denver",
        }
        {
            "America/Denver",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Denver",
        }
        {
            "PNT",
            "Mountain Standard Time",
            "MST",
            "Mountain Standard Time",
            "MST",
            "Phoenix",
        }
        {
            "America/Phoenix",
            "Mountain Standard Time",
            "MST",
            "Mountain Standard Time",
            "MST",
            "Phoenix",
        }
        {
            "CST",
            "Central Standard Time",
            "CST",
            "Central Daylight Time",
            "CDT",
            "Chicago",
        }
        {
            "America/Chicago",
            "Central Standard Time",
            "CST",
            "Central Daylight Time",
            "CDT",
            "Chicago",
        }
        {
            "EST",
            "Eastern Standard Time",
            "EST",
            "Eastern Daylight Time",
            "EDT",
            "New York",
        }
        {
            "America/New_York",
            "Eastern Standard Time",
            "EST",
            "Eastern Daylight Time",
            "EDT",
            "New York",
        }
        {
            "IET",
            "Eastern Standard Time",
            "EST",
            "Eastern Standard Time",
            "EST",
            "Indianapolis",
        }
        {
            "America/Indianapolis",
            "Eastern Standard Time",
            "EST",
            "Eastern Standard Time",
            "EST",
            "Indianapolis",
        }
        {
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Honolulu",
        }
        {
            "Pacific/Honolulu",
            "Hawaii Standard Time",
            "HST",
            "Hawaii Standard Time",
            "HST",
            "Honolulu",
        }
        {
            "AST",
            "Alaska Standard Time",
            "AST",
            "Alaska Daylight Time",
            "ADT",
            "Anchorage"
        }
        {
            "America/Anchorage",
            "Alaska Standard Time",
            "AST",
            "Alaska Daylight Time",
            "ADT",
            "Anchorage",
        }
        {
            "America/Halifax",
            "Atlantic Standard Time",
            "AST",
            "Atlantic Daylight Time",
            "ADT",
            "Halifax"
        }
        {
            "CNT",
            "Newfoundland Standard Time",
            "CNT",
            "Newfoundland Daylight Time",
            "CDT",
            "St. Johns",
        }
        {
            "America/St_Johns",
            "Newfoundland Standard Time",
            "CNT",
            "Newfoundland Daylight Time",
            "CDT",
            "St. Johns",
        }
        {
            "ECT",
            "Central European Standard Time",
            "CET",
            "Central European Daylight Time",
            "CEST",
            "Paris",
        }
        {
            "Europe/Paris",
            "Central European Standard Time",
            "CET",
            "Central European Daylight Time",
            "CEST",
            "Paris",
        }
        {
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "London",
        }
        {
            "Africa/Casablanca",
            "Greenwich Mean Time",
            "GMT",
            "Greenwich Mean Time",
            "GMT",
            "Casablanca",
        }
        {
            "Asia/Jerusalem",
            "Israel Standard Time",
            "IST",
            "Israel Daylight Time",
            "IDT",
            "Jerusalem",
        }
        {
            "JST",
            "Japan Standard Time",
            "JST",
            "Japan Standard Time",
            "JST",
            "Tokyo",
        }
        {
            "Asia/Tokyo",
            "Japan Standard Time",
            "JST",
            "Japan Standard Time",
            "JST",
            "Tokyo",
        }
        {
            "Europe/Bucharest",
            "Eastern European Standard Time",
            "EET",
            "Eastern European Daylight Time",
            "EEST",
            "Bucharest",
        }
        {
            "CTT",
            "China Standard Time",
            "CTT",
            "China Standard Time",
            "CDT",
            "Shanghai",
        }
        {
            "Asia/Shanghai",
            "China Standard Time",
            "CTT",
            "China Standard Time",
            "CDT",
            "Shanghai",
        }
    }
    LocaleID:int { 0x09 }
//    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" 
    }
}
