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

/**
 *
 * Table of Java supplied standard locale elements
 *
 * automatically generated by java LocaleTool LocaleElements.java
 *
 * Date Created: Wed Aug 21 15:47:57  1996
 *
 *     Locale Elements and Patterns:  last update 10/23/96
 *
 *
 */

// WARNING : the format of this file will change in the future!

package com.ibm.icu.dev.tool.localeconverter;

import java.util.ListResourceBundle;

public class myLocaleElements extends ListResourceBundle {
    /**
     * Overrides ListResourceBundle
     */
    public Object[][] getContents() {
        return new Object[][] {
            { "LocaleString", "en_US" }, // locale id based on iso codes
            { "LocaleID", "0409" }, // Windows id
            { "ShortLanguage", "eng" }, // iso-3 abbrev lang name
            { "ShortCountry", "USA" }, // iso-3 abbrev country name
            { "Languages", // language names
                new String[][] {
                    { "ab", "Abkhazian" },
                    { "aa", "Afar" },
                    { "af", "Afrikaans" },
                    { "sq", "Albanian" },
                    { "am", "Amharic" },
                    { "ar", "Arabic" },
                    { "hy", "Armenian" },
                    { "as", "Assamese" },
                    { "ay", "Aymara" },
                    { "az", "Azerbaijani" },
                    { "ba", "Bashkir" },
                    { "eu", "Basque" },
                    { "bn", "Bengali" },
                    { "dz", "Bhutani" },
                    { "bh", "Bihari" },
                    { "bi", "Bislama" },
                    { "br", "Breton" },
                    { "bg", "Bulgarian" },
                    { "my", "Burmese" },
                    { "be", "Byelorussian" },
                    { "km", "Cambodian" },
                    { "ca", "Catalan" },
                    { "zh", "Chinese" },
                    { "co", "Corsican" },
                    { "hr", "Croatian" },
                    { "cs", "Czech" },
                    { "da", "Danish" },
                    { "nl", "Dutch" },
                    { "en", "English" },
                    { "eo", "Esperanto" },
                    { "et", "Estonian" },
                    { "fo", "Faeroese" },
                    { "fj", "Fiji" },
                    { "fi", "Finnish" },
                    { "fr", "French" },
                    { "fy", "Frisian" },
                    { "gl", "Galician" },
                    { "ka", "Georgian" },
                    { "de", "German" },
                    { "el", "Greek" },
                    { "kl", "Greenlandic" },
                    { "gn", "Guarani" },
                    { "gu", "Gujarati" },
                    { "ha", "Hausa" },
                    { "iw", "Hebrew" },
                    { "hi", "Hindi" },
                    { "hu", "Hungarian" },
                    { "is", "Icelandic" },
                    { "in", "Indonesian" },
                    { "ia", "Interlingua" },
                    { "ie", "Interlingue" },
                    { "ik", "Inupiak" },
                    { "ga", "Irish" },
                    { "it", "Italian" },
                    { "ja", "Japanese" },
                    { "jw", "Javanese" },
                    { "kn", "Kannada" },
                    { "ks", "Kashmiri" },
                    { "kk", "Kazakh" },
                    { "rw", "Kinyarwanda" },
                    { "ky", "Kirghiz" },
                    { "rn", "Kirundi" },
                    { "ko", "Korean" },
                    { "ku", "Kurdish" },
                    { "lo", "Laothian" },
                    { "la", "Latin" },
                    { "lv", "Latvian (Lettish)" },
                    { "ln", "Lingala" },
                    { "lt", "Lithuanian" },
                    { "mk", "Macedonian" },
                    { "mg", "Malagasy" },
                    { "ms", "Malay" },
                    { "ml", "Malayalam" },
                    { "mt", "Maltese" },
                    { "mi", "Maori" },
                    { "mr", "Marathi" },
                    { "mo", "Moldavian" },
                    { "mn", "Mongolian" },
                    { "na", "Nauru" },
                    { "ne", "Nepali" },
                    { "no", "Norwegian" },
                    { "oc", "Occitan" },
                    { "or", "Oriya" },
                    { "om", "Oromo (Afan)" },
                    { "ps", "Pashto (Pushto)" },
                    { "fa", "Persian" },
                    { "pl", "Polish" },
                    { "pt", "Portuguese" },
                    { "pa", "Punjabi" },
                    { "qu", "Quechua" },
                    { "rm", "Rhaeto-Romance" },
                    { "ro", "Romanian" },
                    { "ru", "Russian" },
                    { "sm", "Samoan" },
                    { "sg", "Sangro" },
                    { "sa", "Sanskrit" },
                    { "gd", "Scots Gaelic" },
                    { "sr", "Serbian" },
                    { "sh", "Serbo-Croatian" },
                    { "st", "Sesotho" },
                    { "tn", "Setswana" },
                    { "sn", "Shona" },
                    { "sd", "Sindhi" },
                    { "si", "Singhalese" },
                    { "ss", "Siswati" },
                    { "sk", "Slovak" },
                    { "sl", "Slovenian" },
                    { "so", "Somali" },
                    { "es", "Spanish" },
                    { "su", "Sundanese" },
                    { "sw", "Swahili" },
                    { "sv", "Swedish" },
                    { "tl", "Tagalog" },
                    { "tg", "Tajik" },
                    { "ta", "Tamil" },
                    { "tt", "Tatar" },
                    { "te", "Telugu" },
                    { "th", "Thai" },
                    { "bo", "Tibetan" },
                    { "ti", "Tigrinya" },
                    { "to", "Tonga" },
                    { "ts", "Tsonga" },
                    { "tr", "Turkish" },
                    { "tk", "Turkmen" },
                    { "tw", "Twi" },
                    { "uk", "Ukrainian" },
                    { "ur", "Urdu" },
                    { "uz", "Uzbek" },
                    { "vi", "Vietnamese" },
                    { "vo", "Volapuk" },
                    { "cy", "Welsh" },
                    { "wo", "Wolof" },
                    { "xh", "Xhosa" },
                    { "ji", "Yiddish" },
                    { "yo", "Yoruba" },
                    { "zu", "Zulu" }
                }
            },
            { "Countries", // country names
                new String[][] {
                    { "AF", "Afghanistan" },
                    { "AL", "Albania" },
                    { "DZ", "Algeria" },
                    { "AD", "Andorra" },
                    { "AO", "Angola" },
                    { "AI", "Anguilla" },
                    { "AR", "Argentina" },
                    { "AM", "Armenia" },
                    { "AW", "Aruba" },
                    { "AU", "Australia" },
                    { "AT", "Austria" },
                    { "AZ", "Azerbaijan" },
                    { "BS", "Bahamas" },
                    { "BH", "Bahrain" },
                    { "BD", "Bangladesh" },
                    { "BB", "Barbados" },
                    { "BY", "Belarus" },
                    { "BE", "Belgium" },
                    { "BZ", "Belize" },
                    { "BJ", "Benin" },
                    { "BM", "Bermuda" },
                    { "BT", "Bhutan" },
                    { "BO", "Bolivia" },
                    { "BA", "Bosnia and Herzegovina" },
                    { "BW", "Botswana" },
                    { "BR", "Brazil" },
                    { "BN", "Brunei Darussalam" },
                    { "BG", "Bulgaria" },
                    { "BF", "Burkina Faso" },
                    { "BI", "Burundi" },
                    { "KH", "Cambodia" },
                    { "CM", "Cameroon" },
                    { "CA", "Canada" },
                    { "CV", "Cape Verde" },
                    { "CF", "Central African Republic" },
                    { "TD", "Chad" },
                    { "CL", "Chile" },
                    { "CN", "China" },
                    { "CO", "Colombia" },
                    { "KM", "Comoros" },
                    { "CG", "Congo" },
                    { "CR", "Costa Rica" },
                    { "CI", "Cote D'ivoire" },
                    { "HR", "Croatia" },
                    { "CU", "Cuba" },
                    { "CY", "Cyprus" },
                    { "CZ", "Czech Republic" },
                    { "DK", "Denmark" },
                    { "DJ", "Djibouti" },
                    { "DM", "Dominica" },
                    { "DO", "Dominican Republic" },
                    { "TP", "East Timor" },
                    { "EC", "Ecuador" },
                    { "EG", "Egypt" },
                    { "SV", "El Salvador" },
                    { "GQ", "Equatorial Guinea" },
                    { "ER", "Eritrea" },
                    { "EE", "Estonia" },
                    { "ET", "Ethiopia" },
                    { "FJ", "Fiji" },
                    { "FI", "Finland" },
                    { "FR", "France" },
                    { "GF", "French Guiana" },
                    { "PF", "French Polynesia" },
                    { "TF", "French Southern Territories" },
                    { "GA", "Gabon" },
                    { "GM", "Gambia" },
                    { "GE", "Georgia" },
                    { "DE", "Germany" },
                    { "GH", "Ghana" },
                    { "GR", "Greece" },
                    { "GP", "Guadeloupe" },
                    { "GT", "Guatemala" },
                    { "GN", "Guinea" },
                    { "GW", "Guinea-Bissau" },
                    { "GY", "Guyana" },
                    { "HT", "Haiti" },
                    { "HN", "Honduras" },
                    { "HK", "Hong Kong" },
                    { "HU", "Hungary" },
                    { "IS", "Iceland" },
                    { "IN", "India" },
                    { "ID", "Indonesia" },
                    { "IR", "Iran" },
                    { "IQ", "Iraq" },
                    { "IE", "Ireland" },
                    { "IL", "Israel" },
                    { "IT", "Italy" },
                    { "JM", "Jamaica" },
                    { "JP", "Japan" },
                    { "JO", "Jordan" },
                    { "KZ", "Kazakhstan" },
                    { "KE", "Kenya" },
                    { "KI", "Kiribati" },
                    { "KP", "North Korea" },
                    { "KR", "South Korea" },
                    { "KW", "Kuwait" },
                    { "KG", "Kyrgyzstan" },
                    { "LA", "Laos" },
                    { "LV", "Latvia" },
                    { "LB", "Lebanon" },
                    { "LS", "Lesotho" },
                    { "LR", "Liberia" },
                    { "LY", "Libyan Arab Jamahiriya" },
                    { "LI", "Liechtenstein" },
                    { "LT", "Lithuania" },
                    { "LU", "Luxembourg" },
                    { "MK", "Macedonia" },
                    { "MG", "Madagascar" },
                    { "MY", "Malaysia" },
                    { "ML", "Mali" },
                    { "MT", "Malta" },
                    { "MQ", "Martinique" },
                    { "MR", "Mauritania" },
                    { "MU", "Mauritius" },
                    { "YT", "Mayotte" },
                    { "MX", "Mexico" },
                    { "FM", "Micronesia" },
                    { "MD", "Moldova" },
                    { "MC", "Monaco" },
                    { "MN", "Mongolia" },
                    { "MS", "Montserrat" },
                    { "MA", "Morocco" },
                    { "MZ", "Mozambique" },
                    { "MM", "Myanmar" },
                    { "NA", "Namibia" },
                    { "NP", "Nepal" },
                    { "NL", "Netherlands" },
                    { "AN", "Netherlands Antilles" },
                    { "NC", "New Caledonia" },
                    { "NZ", "New Zealand" },
                    { "NI", "Nicaragua" },
                    { "NE", "Niger" },
                    { "NG", "Nigeria" },
                    { "NU", "Niue" },
                    { "NO", "Norway" },
                    { "OM", "Oman" },
                    { "PK", "Pakistan" },
                    { "PA", "Panama" },
                    { "PG", "Papua New Guinea" },
                    { "PY", "Paraguay" },
                    { "PE", "Peru" },
                    { "PH", "Philippines" },
                    { "PL", "Poland" },
                    { "PT", "Portugal" },
                    { "PR", "Puerto Rico" },
                    { "QA", "Qatar" },
                    { "RO", "Romania" },
                    { "RU", "Russian Federation" },
                    { "RW", "Rwanda" },
                    { "SA", "Saudi Arabia" },
                    { "SN", "Senegal" },
                    { "SP", "Serbia" },
                    { "SC", "Seychelles" },
                    { "SL", "Sierra Leone" },
                    { "SG", "Singapore" },
                    { "SK", "Slovakia" },
                    { "SI", "Slovenia" },
                    { "SO", "Somalia" },
                    { "ZA", "South Africa" },
                    { "ES", "Spain" },
                    { "LK", "Sri Lanka" },
                    { "SD", "Sudan" },
                    { "SR", "Suriname" },
                    { "SZ", "Swaziland" },
                    { "SE", "Sweden" },
                    { "CH", "Switzerland" },
                    { "SY", "Syria" },
                    { "TW", "Taiwan" },
                    { "TJ", "Tajikistan" },
                    { "TZ", "Tanzania" },
                    { "TH", "Thailand" },
                    { "TG", "Togo" },
                    { "TK", "Tokelau" },
                    { "TO", "Tonga" },
                    { "TT", "Trinidad and Tobago" },
                    { "TN", "Tunisia" },
                    { "TR", "Turkey" },
                    { "TM", "Turkmenistan" },
                    { "UG", "Uganda" },
                    { "UA", "Ukraine" },
                    { "AE", "United Arab Emirates" },
                    { "GB", "United Kingdom" },
                    { "US", "United States" },
                    { "UY", "Uruguay" },
                    { "UZ", "Uzbekistan" },
                    { "VU", "Vanuatu" },
                    { "VA", "Vatican" },
                    { "VE", "Venezuela" },
                    { "VN", "Viet Nam" },
                    { "VG", "British Virgin Islands" },
                    { "VI", "U.S. Virgin Islands" },
                    { "EH", "Western Sahara" },
                    { "YE", "Yemen" },
                    { "YU", "Yugoslavia" },
                    { "ZR", "Zaire" },
                    { "ZM", "Zambia" },
                    { "ZW", "Zimbabwe" }
                }
            },
            { "%%EURO", "Euro" }, // Euro variant display name
            { "LocaleNamePatterns",
                /* Formats for the display name of a locale, for a list of
                 * items, and for composing two items in a list into one item.
                 * The list patterns are used in the variant name and in the
                 * full display name.
                 */
                new String[] {
                    "{0,choice,0#|1#{1}|2#{1} ({2})}", // Display name
                    "{0,choice,0#|1#{1}|2#{1},{2}|3#{1},{2},{3}}", // List
                    "{0},{1}" // List composition
                }
            },
            { "MonthNames", 
                new String[] { 
                    "January", // january
                    "February", // february
                    "March", // march
                    "April", // april
                    "May", // may
                    "June", // june
                    "July", // july
                    "August", // august
                    "September", // september
                    "October", // october
                    "November", // november
                    "December", // december
                    "" // month 13 if applicable
                }
            },
            { "MonthAbbreviations", 
                new String[] { 
                    "Jan", // abb january
                    "Feb", // abb february
                    "Mar", // abb march
                    "Apr", // abb april
                    "May", // abb may
                    "Jun", // abb june
                    "Jul", // abb july
                    "Aug", // abb august
                    "Sep", // abb september
                    "Oct", // abb october
                    "Nov", // abb november
                    "Dec", // abb december
                    "" // abb month 13 if applicable
                }
            },
            { "DayNames", 
                new String[] { 
                    "Sunday", // Sunday
                    "Monday", // Monday
                    "Tuesday", // Tuesday
                    "Wednesday", // Wednesday
                    "Thursday", // Thursday
                    "Friday", // Friday
                    "Saturday" // Saturday
                }
            },
            { "DayAbbreviations", 
                new String[] { 
                    "Sun", // abb Sunday
                    "Mon", // abb Monday
                    "Tue", // abb Tuesday
                    "Wed", // abb Wednesday
                    "Thu", // abb Thursday
                    "Fri", // abb Friday
                    "Sat" // abb Saturday
                }
            },
            { "AmPmMarkers", 
                new String[] { 
                    "AM", // am marker
                    "PM" // pm marker
                }
            },
            { "Eras", 
                new String[] { // era strings
                    "BC", 
                    "AD" 
                }
            },
            { "NumberPatterns", 
                new String[] { 
                    "#,##0.###;-#,##0.###", // decimal pattern
                    "$#,##0.00;($#,##0.00)", // currency pattern
                    "#,##0%" // percent pattern
                }
            },
            { "NumberElements", 
                new String[] { 
                    ".", // decimal separator
                    ",", // group (thousands) separator
                    ";", // list separator
                    "%", // percent sign
                    "0", // native 0 digit
                    "#", // pattern digit
                    "-", // minus sign
                    "E", // exponential
                    "\u2030", // per mille
                    "\u221e", // infinity
                    "\ufffd" // NaN
                }
            },
            { "CurrencyElements", 
                new String[] { 
                    "$", // local currency symbol
                    "USD", // intl currency symbol
                    "." // monetary decimal separator
                }
            },
            { "DateTimePatterns", 
                new String[] { 
                    "h:mm:ss 'o''''clock' a z", // full time pattern
                    "h:mm:ss a z", // long time pattern
                    "h:mm:ss a", // medium time pattern
                    "h:mm a", // short time pattern
                    "EEEE, MMMM d, yyyy", // full date pattern
                    "MMMM d, yyyy", // long date pattern
                    "dd-MMM-yy", // medium date pattern
                    "M/d/yy", // short date pattern
                    "{1} {0}" // date-time pattern
                }
            },
            { "DateTimeElements", 
                new String[] { 
                    "1", // first day of week
                    "1" // min days in first week
                }
            },
            { "collations",new String[][]{
                                    {"Version","1.0"},
                                    {"Overide","false"},
                                    {"Sequence",""}
                                }
            },
            { "Measurement" ,""},
            { "CountryNumber" , ""},
            { "CountryISBNNumber" , ""},
            { "LanguageLibraryUse" , ""},
            { "PaperSize", new String[][]{
                            {"Height",""},
                            {"Width",""},
                            {"Units", ""}
                        }
            },
          
            { "Messages" , new String[][] {
                                {"YesExpression",""}, /* yes expression */
                                {"NoExpression",""},  /* no expression */
                                {"YesStr", ""},
                                {"NoStr", ""}
                            }
            },
            { "AddressFormat", new String[][]{
                                        {"PostalFormat",""},
                                }
            },

            {"NameFormat", new String[][]{
                                {"NamePattern",""},
                            {"GeneralSalutaion", ""},
                            {"ShortSalutationMr", ""},
                            {"ShortSalutationMiss",""},
                            {"ShortSalutationMrs",""},
                            {"LongSalutationMr",""},
                            {"LongSalutationMiss",""},
                            {"LongSalutationMrs",""}
                            }
            }, 
            { "Identification", new String[][]{
                                {"Title",""},
                                {"Source",""},
                                {"Address",""},
                                {"Contact",""},
                                {"Email",""},
                                {"Telephone", ""},
                                {"Fax", ""},
                                {"Language",""},
                                {"Territory",""},
                                {"Audience", ""},
                                {"Application", ""},
                                {"Abbreviation", ""},
                                {"Revision", ""},
                                {"Date",""}
                        }
                        
            },
            { "TelephoneFormat", new String[][]{
                                {"InternationalFormat",""},
                                {"DomesticFormat",""},
                                {"InternationalDialCode",""},
                                {"InternationalPrefix",""}
                        }
            }    
        };
    }
}
            
          