// ***************************************************************************
// *
// *   Copyright (C) 1997-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
//
// Significant contributions from Mohammad DAMT


id {
    Version { "2.0" }
    Countries {
        AD { "Andora" }
        AE { "Uni Emirat Arab" }
        AF { "Afghanistan" }
        AG { "Antigua dan Barbuda" }
        AI { "Anguilla" }
        AL { "Albania" }
        AM { "Armenia" }
        AN { "Antilles Belanda" }
        AO { "Angola" }
        AQ { "Antarktika" }
        AR { "Argentina" }
        AS { "Samoa Amerika" }
        AT { "Austria" }
        AU { "Australia" }
        AW { "Aruba" }
        AZ { "Azerbaijan" }

        BA { "Bosnia dan Herzegovina" }
        BB { "Barbados" }
        BD { "Bangladesh" }
        BE { "Belgia" }
        BF { "Burkina Faso" }
        BG { "Bulgaria" }
        BH { "Bahrain" }
        BI { "Burundi" }
        BJ { "Benin" }
        BM { "Bermuda" }
        BN { "Brunei" }
        BO { "Bolivia" }
        BR { "Brazil" }
        BS { "Bahamas" }
        BT { "Bhutan" }
        BV { "Kepulauan Bouvet" }
        BW { "Botswana" }
        BY { "Belarusia" }
        BZ { "Belize" }

        CA { "Kanada" }
        CC { "Kepulauan Cocos"}
        CD { "Republik Demokratik Kongo" }
        CF { "Republik Afrika Tengah" }
        CG { "Kongo" }
        CH { "Swiss" }
        CI { "Pantai Gading" }
        CK { "Kepulauan Cook" }
        CL { "Chili" }
        CM { "Kamerun" }
        CN { "Cina" }
        CO { "Kolombia" }
        CR { "Kosta Rika" }
        CU { "Kuba" }
        CV { "Tanjung Verde" }
        CX { "Pulau Christmas" }
        CY { "Siprus" }
        CZ { "Republik Ceko" }

        DE { "Jerman" }
        DJ { "Jibouti" }
        DK { "Denmark" }
        DM { "Dominika" }
        DO { "Republik Dominika" }
        DZ { "Algeria" }

        EC { "Ekuador" }
        EE { "Estonia" }
        EG { "Mesir" }
        EH { "Sahara Barat" }
        ER { "Eritrea" }
        ES { "Spanyol" }
        ET { "Ethiopia" }

        FI { "Finlandia" }
        FJ { "Fiji" }
        FK { "Kepulauan Falkland" }
        FM { "Mikronesia" }
        FO { "Kepulauan Faroe" }
        FR { "Perancis" }

        GA { "Gabon" }
        GB { "Inggris Raya" }
        GD { "Grenada" }
        GE { "Georgia" }
        GF { "Guyana Perancis" }
        GH { "Ghana" }
        GI { "Gibraltar" }
        GL { "Greenland" }
        GM { "Gambia" }
        GN { "Guinea" }
        GP { "Guadeloupe" }
        GQ { "Guinea Khatulistiwa" }
        GR { "Yunani" }
        GS { "Georgia Selatan dan Kepulauan Sandwich Selatan" }
        GT { "Guatemala" }
        GU { "Guam" }
        GW { "Guinea-Bissau" }
        GY { "Guyana" }

        HK { "Hong Kong S.A.R., Cina" }
        HM { "Pulau Heard dan Kepulauan McDonald" }
        HN { "Honduras" }
        HR { "Kroasia" }
        HT { "Haiti" }
        HU { "Hungaria" }

        ID { "Indonesia" }
        IE { "Irlandia" }
        IL { "Israel" }
        IN { "India" }
        //IO { "British Indian Ocean Territory" }
        IQ { "Iraq" }
        IR { "Iran" }
        IS { "Islandia" }
        IT { "Itali" }

        JM { "Jamaika" }
        JO { "Yordania" }
        JP { "Jepang" }

        KE { "Kenya" }
        KG { "Kyrgyzstan" }
        KH { "Kamboja" }
        KI { "Kiribati" }
        KM { "Komoros" }
        KN { "Saint Kitts dan Nevis" }
        KP { "Korea Utara" }
        KR { "Korea Selatan" }
        KW { "Kuwait" }
        KY { "Kepulauan Kayman" }
        KZ { "Kazakhstan" }

        LA { "Laos" }
        LB { "Lebanon" }
        LC { "Santa Lusia" }
        LI { "Liechtenstein" }
        LK { "Sri Lanka" }
        LR { "Liberia" }
        LS { "Lesotho" }
        LT { "Lithuania" }
        LU { "Luxembourg" }
        LV { "Latvia" }
        LY { "Libya" }

        MA { "Maroko" }
        MC { "Monaco" }
        MD { "Moldova" }
        MG { "Madagaskar" }
        MH { "Kepulauan Marshall"}
        MK { "Macedonia" }
        ML { "Mali" }
        MM { "Myanmar" }
        MN { "Mongolia" }
        MO { "Makao S.A.R. Cina" }
        MP { "Kepualuan Mariana Utara" }
        MQ { "Martinique" }
        MR { "Mauritania" }
        MS { "Montserrat" }
        MT { "Malta" }
        MU { "Mauritius" }
        MV { "Maldives" }
        MW { "Malawi" }
        MX { "Mexico" }
        MY { "Malaysia" }
        MZ { "Mozambique" }

        NA { "Namibia" }
        NC { "Kaledonia Baru" }
        NE { "Niger" }
        NF { "Kepulauan Norfolk" }
        NG { "Nigeria" }
        NI { "Nicaragua" }
        NL { "Netherlands" }
        NO { "Norwegia" }
        NP { "Nepal" }
        NR { "Nauru" }
        NU { "Niue" }
        NZ { "Selandia Baru" }

        OM { "Oman" }

        PA { "Panama" }
        PE { "Peru" }
        PF { "Polynesia Perancis" }
        PG { "Papua Nugini" }
        PH { "Filipina" }
        PK { "Pakistan" }
        PL { "Polandia" }
        PM { "Saint Pierre dan Miquelon" }
        PN { "Pitcairn" }
        PR { "Puerto Riko" }
        PS { "Otoritas Palestina" }
        PT { "Portugis" }
        PW { "Palau" }
        PY { "Paraguay" }

        QA { "Qatar" }

        RE { "R\u00E9union" }
        RO { "Romania" }
        RU { "Rusia" }
        RW { "Rwanda" }

        SA { "Arab Saudi" }
        SB { "Kepulauan Solomon" }
        SC { "Seychelles" }
        SD { "Sudan" }
        SE { "Sweden" }
        SG { "Singapura" }
        SH { "Saint Helena" }
        SI { "Slovenia" }
        SJ { "Svalbard dan Jan Mayen" }
        SK { "Slovakia" }
        SL { "Sierra Leone" }
        SM { "San Marino" }
        SN { "Senegal" }
        SO { "Somalia" }
        SP { "Serbia" }
        SR { "Suriname" }
        ST { "Sao Tome dan Principe" }
        SV { "El Salvador" }
        SY { "Syria" }
        SZ { "Swaziland" }

        //TC { "Turks and Caicos Islands" }
        TD { "Chad" }
        //TF { "French Southern Territories" }
        TG { "Togo" }
        TH { "Thailand" }
        TJ { "Tajikistan" }
        TK { "Tokelau" }
        //TL { "Timor-Leste" }    // This was called East Timor
        TM { "Turkmenistan" }
        TN { "Tunisia" }
        TO { "Tonga" }
        TR { "Turkey" }
        TT { "Trinidad dan Tobago" }
        TV { "Tuvalu" }
        TW { "Taiwan" }
        TZ { "Tanzania" }

        UA { "Ukraina" }
        UG { "Uganda" }
        //UM { "United States Minor Outlying Islands" }
        US { "Amerika Serikat" }
        UY { "Uruguay" }
        UZ { "Uzbekistan" }

        VA { "Vatikan" }
        VC { "Saint Vincent dan Grenadines" }
        VE { "Venezuela" }
        VG { "Kepulauan British Virgin" }
        VI { "Kepulauan U.S. Virgin" }
        VN { "Vietnam" }
        VU { "Vanuatu" }

        WF { "Wallis dan Futuna" }
        WS { "Samoa" }

        YE { "Yaman" }
        YT { "Mayotte" }
        YU { "Yugoslavia" }

        ZA { "Afrika Selatan" }
        ZM { "Zambia" }
        ZW { "Zimbabwe" }
    }
    // Currency display names
    Currencies {
        IDR { "Rp", "IDR" }
    }
    DayAbbreviations {
        "Min",
        "Sen",
        "Sel",
        "Rab",
        "Kam",
        "Jum",
        "Sab",
    }
    DayNames {
        "Minggu",
        "Senin",
        "Selasa",
        "Rabu",
        "Kamis",
        "Jumat",
        "Sabtu",
    }
    MonthAbbreviations {
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "Mei",
        "Jun",
        "Jul",
        "Agu",
        "Sep",
        "Okt",
        "Nov",
        "Des",
    }
    MonthNames {
        "Januari",
        "Februari",
        "Maret",
        "April",
        "Mei",
        "Juni",
        "Juli",
        "Agustus",
        "September",
        "Oktober",
        "November",
        "Desember",
    }
    Languages {
        aa  { "Afar" }
        ab  { "Abkhaz" }
        ace { "Aceh" }
        ae  { "Avestan" }
        af  { "Afrikaans" }
        afa { "Afro-Asiatik (Lainnya)" }
        ak  { "Akan" }
        akk { "Akkadien" }
        alg { "Bahasa Algonquia" }
        am  { "Amharik" }
        ang { "Inggris Kuno (kl.450-1100)" }
        apa { "Bahasa-bahasa Apache"}
        ar  { "Arab" }
        arc { "Aram" }
        arn { "Araucan" }
        art { "Buatan (Lainnya)" }
        as  { "Assam" }
        ast { "Astur" }
        ath { "Bahasa-bahasa Athapaska" }
        aus { "Bahasa-bahasa Australia" }
        av  { "Avarik" }
        ay  { "Aymara" }
        az  { "Azerbaijan" }
        ba  { "Bashkir" }
        bai { "Bahasa-bahasa Bamileke" }
        ban { "Balin" }
        bat { "Baltik (Lainnya)" }
        be  { "Belarusia" }
        bg  { "Bulgaria" }
        bh  { "Bihari" }
        bi  { "Bislama" }
        bm  { "Bambara" }
        bn  { "Bengal" }
        bo  { "Tibet" }
        br  { "Breton" }
        bs  { "Bosnia"}
        bug { "Bugis" }
        ca  { "Catalan" }
        cai { "India Amerika Tengah (Lainnnya)" }
        car { "Karib" }
        cau { "Kaukasia (Lainnya)" }
        ce  { "Chechen" }
        cel { "Celtic (Lainnya)" }
        ch  { "Chamorro" }
        chk { "Chuuke" }
        co  { "Korsika" }
        cop { "Koptik" }
        cr  { "Cree" }
        cs  { "Ceko" }
        cv  { "Chuvash" }
        cy  { "Welsh" }
        da  { "Denmark" }
        de  { "Jerman" }
        dv  { "Divehi" }
        dz  { "Dzongkha" }
        ee  { "Ewe" }
        egy { "Mesir Kuno" }
        el  { "Yunani" } //  Modern (1453-)
        en  { "Inggris" }
        enm { "Inggris, Abad Pertengahan (1100-1500)" }
        eo  { "Esperanto" }
        es  { "Spanyol" }
        et  { "Estonian" }
        eu  { "Basque" }
        fa  { "Persia" }
        ff  { "Fulah" }
        fi  { "Finlandia" }
        fj  { "Fiji" }
        fo  { "Faro" }
        fr  { "Perancis" }
        frm { "Perancis, Abad Pertengahan (kl.1400-1600)" }
        fro { "Perancis Kuno (842-kl.1400)" }
        fur { "Friuli" }
        fy  { "Frisi" }
        ga  { "Irlandia" }
        gd  { "Gaelik Skotlandia" }
        gem { "Jermanik (Lainnya)" }
        gil { "Gilbert" }
        gl  { "Gallegan" }
        gmh { "Jerman, Abad Pertengahan (kl.1050-1500)" }
        gn  { "Guarani" }
        goh { "Jerman Kuno (kl.750-1050)" }
        got { "Gothik" }
        grc { "Yunani Kuno (sd 1453)" }
        gu  { "Gujarati" }
        gv  { "Manx" }
        ha  { "Hausa" }
        haw { "Hawaii" }
        he  { "Ibrani" }
        hi  { "Hindi" }
        ho  { "Hiri Motu" }
        hr  { "Kroasia" }
        hu  { "Hungaria" }
        hy  { "Armenia" }
        hz  { "Herero" }
        ia  { "Interlingua" }
        id  { "Bahasa Indonesia" }
        ie  { "Interlingue" }
        ig  { "Igbo" }
        ii  { "Sichuan Yi" }
        ik  { "Inupiaq" }
        io  { "Ido" }
        is  { "Icelandic" }
        it  { "Italian" }
        ja  { "Japanese" }
        jpr { "Judeo-Persia" }
        jrb { "Judeo-Arab" }
        jv  { "Jawa" }
        ka  { "Georgian" }
        kg  { "Kongo" }
        ki  { "Kikuyu" }
        kj  { "Kuanyama" }
        kk  { "Kazakh" }
        kl  { "Kalaallisut" }
        km  { "Khmer" }
        kn  { "Kannada" }
        ko  { "Korea" }
        kok { "Konkani" }
        kos { "Kosrae" }
        kr  { "Kanuri" }
        ks  { "Kashmir" }
        ku  { "Kurdi" }
        kv  { "Komi" }
        kw  { "Cornish" }
        ky  { "Kirghiz" }
        la  { "Latin" }
        lb  { "Luxembourg" }
        lez { "Lezghia" }
        lg  { "Ganda" }
        li  { "Limburg" }
        ln  { "Lingala" }
        lo  { "Lao" }
        lt  { "Lithuania" }
        lu  { "Luba-Katanga" }
        lv  { "Latvian" }
        mad { "Madura" }
        mak { "Makassar" }
        map { "Austronesia" }
        mg  { "Malagasi" }
        mga { "Irlandia Abad Pertengahan (900-1200)" }
        mh  { "Marshall"}
        mi  { "Maori" }
        mis { "Bahasa Lain-lain" }
        mk  { "Macedonian" }
        mkh { "Mon-Khmer (Lainnya)" }
        ml  { "Malayalam" }
        mn  { "Mongolian" }
        mo  { "Moldavian" }
        mr  { "Marathi" }
        ms  { "Malay" }
        mt  { "Maltese" }
        my  { "Burma" }
        na  { "Nauru" }
        nb  { "Norwegian Bokm\u00e5l" }
        ne  { "Nepal" }
        ng  { "Ndonga" }
        nl  { "Belanda" }
        nn  { "Norwegian Nynorsk" }
        no  { "Norwegian" }
        nv  { "Navajo"}
        ny  { "Nyanja; Chichewa; Chewa" }
        oj  { "Ojibwa" }
        om  { "Oromo" }
        or  { "Oriya" }
        os  { "Ossetic" }
        pa  { "Punjabi" }
        paa { "Papuan (Lainnya)" }
        peo { "Persia Kuno (kl.600-400 SM.)" }
        phi { "Filipina (Lainnya)" }
        pi  { "Pali" }
        pl  { "Polish" }
        ps  { "Pashto (Pushto)" }
        pt  { "Portugis" }
        qu  { "Quechua" }
        // The range qaa-qtz is reserved for local use.
        rm  { "Rhaeto-Romance" }
        rn  { "Rundi" }
        ro  { "Romanian" }
        ru  { "Russian" }
        rw  { "Kinyarwanda" }
        sa  { "Sanskrit" }
        sc  { "Sardinian" }
        sd  { "Sindhi" }
        se  { "Northern Sami" }
        sg  { "Sango" }
        sh  { "Serbo-Croatian" }
        si  { "Sinhalese" }
        sk  { "Slovak" }
        sl  { "Slovenian" }
        sm  { "Samoan" }
        sn  { "Shona" }
        so  { "Somali" }
        sq  { "Albanian" }
        sr  { "Serbian" }
        ss  { "Swati" }
        su  { "Sundan" }
        sux { "Sumeria"}
        sv  { "Swedia" }
        sw  { "Swahili" }
        syr { "Syria" }
        ta  { "Tamil" }
        te  { "Telugu" }
        tg  { "Tajik" }
        th  { "Thai" }
        ti  { "Tigrinya" }
        tk  { "Turkmen" }
        tl  { "Tagalog" }
        tn  { "Tswana" }
        tr  { "Turkish" }
        ts  { "Tsonga" }
        tt  { "Tatar" }
        tw  { "Twi" }
        ty  { "Tahitian" }
        ug  { "Uighur" }
        uk  { "Ukrainian" }
        ur  { "Urdu" }
        uz  { "Uzbek" }
        ve  { "Venda" }
        vi  { "Vietnamese" }
        vo  { "Volap\u00FCk" }   // Yes the iso-639 standard uses the umlaut in the English name
        wa  { "Walloon" }
        wo  { "Wolof" }
        xh  { "Xhosa" }
        yi  { "Yiddish" }
        yo  { "Yoruba" }
        za  { "Zhuang" }
        zh  { "Cina" }
        zu  { "Zulu" }
    }
    LocaleScript:array{ 
       "Latn",  // ISO 15924 Name 
    }
    ExemplarCharacters{
       "[a-z]"
    }
    NumberElements {
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ",",
        "+",
    }
    NumberPatterns {
        "#,##0.###;-#,##0.###",
        "\u00a4#,##0.00;-\u00a4#,##0.00",
        "#,##0%",
        "#E0",
    }
    // /**************** Info Below is needed ****************/
    // collations{}
    // AmPmMarkers{}
    // Eras{}
    // localPatternChars{}
}