﻿// ***************************************************************************
// *
// * Copyright (C) 2010 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/id.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/id.xml
 */
id{
    Languages{
        aa{"Afar"}
        ab{"Abkhaz"}
        ace{"Aceh"}
        ach{"Acholi"}
        ady{"Adygei"}
        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"}
        bho{"Bhojpur"}
        bi{"Bislama"}
        bm{"Bambara"}
        bn{"Bengal"}
        bo{"Tibet"}
        br{"Breton"}
        bs{"Bosnia"}
        bug{"Bugis"}
        ca{"Katalan"}
        cad{"Kado"}
        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{"Cheska"}
        cv{"Chuvash"}
        cy{"Welsh"}
        da{"Dansk"}
        de{"Jerman"}
        dv{"Divehi"}
        dz{"Dzongkha"}
        ee{"Ewe"}
        egy{"Mesir Kuno"}
        el{"Yunani"}
        en{"Inggris"}
        enm{"Inggris, Abad Pertengahan (1100-1500)"}
        eo{"Esperanto"}
        es{"Spanyol"}
        et{"Estonian"}
        eu{"Basque"}
        fa{"Persia"}
        ff{"Fulah"}
        fi{"Suomi"}
        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{"Kroat"}
        hu{"Magyar"}
        hy{"Armenia"}
        hz{"Herero"}
        ia{"Interlingua"}
        id{"Bahasa Indonesia"}
        ie{"Interlingue"}
        ig{"Igbo"}
        ii{"Sichuan Yi"}
        ik{"Inupiaq"}
        io{"Ido"}
        is{"Icelandic"}
        it{"Italia"}
        ja{"Jepang"}
        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{"Latvi"}
        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"}
        myv{"Erza"}
        na{"Nauru"}
        nb{"Norwegian Bokmål"}
        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"}
        rm{"Rhaeto-Romance"}
        rn{"Rundi"}
        ro{"Romanian"}
        ru{"Rusia"}
        rw{"Kinyarwanda"}
        sa{"Sanskrit"}
        sc{"Sardinian"}
        sd{"Sindhi"}
        se{"Northern Sami"}
        sg{"Sango"}
        sh{"Serbo-Croatian"}
        si{"Sinhalese"}
        sk{"Slovak"}
        sl{"Sloven"}
        sm{"Samoan"}
        sn{"Shona"}
        so{"Somali"}
        sq{"Albanian"}
        sr{"Serb"}
        ss{"Swati"}
        su{"Sundan"}
        sux{"Sumeria"}
        sv{"Swensk"}
        sw{"Swahili"}
        swb{"Komoria"}
        syr{"Syria"}
        ta{"Tamil"}
        te{"Telugu"}
        tg{"Tajik"}
        th{"Thai"}
        ti{"Tigrinya"}
        tk{"Turkmen"}
        tl{"Tagalog"}
        tn{"Tswana"}
        tr{"Turki"}
        ts{"Tsonga"}
        tt{"Tatar"}
        tut{"Altai"}
        tw{"Twi"}
        ty{"Tahitian"}
        ug{"Uighur"}
        uk{"Ukraina"}
        ur{"Urdu"}
        uz{"Uzbek"}
        ve{"Venda"}
        vi{"Vietnamese"}
        vo{"Volapük"}
        wa{"Walloon"}
        wo{"Wolof"}
        xh{"Xhosa"}
        yi{"Yiddish"}
        yo{"Yoruba"}
        yue{"Kanton"}
        za{"Zhuang"}
        zh{"Mandarin"}
        zh_Hans{"Mandarin (aksara sederhana)"}
        zh_Hant{"Mandarin (aksara tradisional)"}
        zu{"Zulu"}
    }
    Variants{
        PINYIN{"Pinyin Latin"}
        WADEGILE{"Wade-Giles Latin"}
    }
    Version{"2.0.48.56"}
}
