/*
 *******************************************************************************
 *
 *   Copyright (C) 1996-2002, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 *******************************************************************************
 *
 * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/myLocaleElements.java,v $ 
 * $Date: 2002/08/01 20:27:21 $ 
 * $Revision: 1.3 $
 *
 *****************************************************************************************
 */

/**
 *
 * 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
                }
            },
            { "CollationElements",new String[][]{
                                    {"Version","1.0"},
                                    {"Overide","false"},
                                    {"Sequence",""}
                                }
            },
            { "Measurement" ,""},
            { "CountryNumber" , ""},
            { "CountryISBNNumber" , ""},
            { "LanguageLibraryUse" , ""},
            { "PaperSize", new String[][]{
                            {"Hieght",""},
                            {"Width",""},
                            {"Units", ""}
                        }
            },
          
            { "Messages" , new String[][] {
                                {"yesExpression",""}, /* yes expression */
                                {"noExpression",""}  /* no expression */
                            }
            },
            { "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",""}
                        }
            }    
        };
    }
}
            
          