﻿// ***************************************************************************
// *
// * Copyright (C) 2013 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/cy.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/cy.xml
 */
cy{
    Keys{
        calendar{"Calendr"}
        collation{"Trefn"}
        currency{"Arian Breiniol"}
        numbers{"Rhifau"}
    }
    Languages{
        ab{"Abchaseg"}
        af{"Affricâneg"}
        afa{"Iaith Affro-Asiaidd"}
        am{"Amhareg"}
        ang{"Hen Saesneg"}
        ar{"Arabeg"}
        arc{"Aramaeg"}
        art{"Iaith Artiffisial"}
        as{"Asameg"}
        ath{"Iaith Athabasgaidd"}
        aus{"Iaith Awstralaidd"}
        az{"Aserbaijaneg"}
        be{"Belarwseg"}
        bg{"Bwlgareg"}
        bh{"Bihari"}
        bn{"Bengaleg"}
        bo{"Tibeteg"}
        br{"Llydaweg"}
        bs{"Bosnieg"}
        ca{"Catalaneg"}
        cel{"Iaith Geltaidd"}
        cs{"Tsieceg"}
        cy{"Cymraeg"}
        da{"Daneg"}
        de{"Almaeneg"}
        de_AT{"Almaeneg Awstria"}
        de_CH{"Almaeneg Safonol y Swistir"}
        dum{"Iseldireg Canol"}
        egy{"Hen Eiffteg"}
        el{"Groeg"}
        en{"Saesneg"}
        en_AU{"Saesneg Awstralia"}
        en_CA{"Saesneg Canada"}
        en_GB{"Saesneg Prydain"}
        en_US{"Saesneg UDA"}
        enm{"Saesneg Canol"}
        eo{"Esperanto"}
        es{"Sbaeneg"}
        es_419{"Sbaeneg America Ladin"}
        es_ES{"Sbaeneg Ewrop"}
        et{"Estoneg"}
        eu{"Basgeg"}
        fa{"Perseg"}
        fi{"Ffinneg"}
        fil{"Ffilipineg"}
        fiu{"Iaith Ffinno-Wgrig"}
        fj{"Ffijïeg"}
        fo{"Ffaroeg"}
        fr{"Ffrangeg"}
        fr_CA{"Ffrangeg Canada"}
        fr_CH{"Ffrangeg y Swistir"}
        frm{"Ffrangeg Canol"}
        fro{"Hen Ffrangeg"}
        fur{"Ffriwleg"}
        fy{"Ffriseg y Gorllewin"}
        ga{"Gwyddeleg"}
        gd{"Gaeleg yr Alban"}
        gem{"Iaith Germanaidd"}
        gl{"Galiseg"}
        gn{"Guaraní"}
        got{"Gotheg"}
        grc{"Hen Roeg"}
        gsw{"Almaeneg y Swistir"}
        gu{"Gwjarati"}
        gv{"Manaweg"}
        ha{"Hawsa"}
        haw{"Hawäieg"}
        he{"Hebraeg"}
        hi{"Hindi"}
        hr{"Croateg"}
        ht{"Creol Haiti"}
        hu{"Hwngareg"}
        hy{"Armeneg"}
        ia{"Interlingua"}
        id{"Indoneseg"}
        ie{"Interlingue"}
        ig{"Igbo"}
        ine{"Iaith Indo-Ewropeaidd"}
        is{"Islandeg"}
        it{"Eidaleg"}
        ja{"Japaneeg"}
        jv{"Jafanaeg"}
        ka{"Georgeg"}
        kk{"Casacheg"}
        km{"Chmereg"}
        kn{"Canareg"}
        ko{"Corëeg"}
        ks{"Cashmireg"}
        ku{"Cwrdeg"}
        kw{"Cernyweg"}
        ky{"Cirgiseg"}
        la{"Lladin"}
        lb{"Lwcsembwrgeg"}
        ln{"Lingala"}
        lo{"Laoeg"}
        lt{"Lithwaneg"}
        lv{"Latfieg"}
        mg{"Malagaseg"}
        mga{"Gwyddeleg Canol"}
        mi{"Maori"}
        mic{"Micmaceg"}
        mis{"Iaith Amrywiol"}
        mk{"Macedoneg"}
        ml{"Malayalam"}
        mn{"Mongoleg"}
        mo{"Moldofeg"}
        mr{"Marathi"}
        ms{"Maleieg"}
        mt{"Malteg"}
        my{"Byrmaneg"}
        nb{"Norwyeg Bokmål"}
        ne{"Nepaleg"}
        nl{"Iseldireg"}
        nl_BE{"Fflemeg"}
        nn{"Norwyeg Nynorsk"}
        no{"Norwyeg"}
        non{"Hen Norseg"}
        oc{"Ocsitaneg"}
        or{"Oriya"}
        pa{"Pwnjabeg"}
        peo{"Hen Bersieg"}
        pl{"Pwyleg"}
        pro{"Hen Brofensaleg"}
        ps{"Pashto"}
        pt{"Portiwgeeg"}
        pt_BR{"Portiwgeeg Brasil"}
        pt_PT{"Portiwgeeg Ewrop"}
        qu{"Quechua"}
        rm{"Romaunsch"}
        ro{"Rwmaneg"}
        ru{"Rwseg"}
        sa{"Sansgrit"}
        sco{"Sgoteg"}
        sd{"Sindhi"}
        sga{"Hen Wyddeleg"}
        sh{"Serbo-Croateg"}
        si{"Sinhaleg"}
        sk{"Slofaceg"}
        sl{"Slofeneg"}
        sla{"Iaith Slafig"}
        so{"Somaleg"}
        sq{"Albaneg"}
        sr{"Serbeg"}
        st{"Sesotheg"}
        su{"Swndaneg"}
        sv{"Swedeg"}
        sw{"Swahili"}
        swc{"Swahili'r Congo"}
        ta{"Tamileg"}
        te{"Telugu"}
        tg{"Tajiceg"}
        th{"Thai"}
        ti{"Tigriniaeg"}
        tk{"Twrcmeneg"}
        tlh{"Klingon"}
        to{"Tongeg"}
        tr{"Tyrceg"}
        tt{"Tatareg"}
        ug{"Uighur"}
        uk{"Wcreineg"}
        und{"Iaith Anhysbys"}
        ur{"Wrdw"}
        uz{"Wsbeceg"}
        vi{"Fietnameg"}
        wo{"Woloff"}
        xh{"Xhosa"}
        yo{"Iorwba"}
        yue{"Cantoneeg"}
        zh{"Tsieineeg"}
        zh_Hans{"Tsieineeg Symledig"}
        zh_Hant{"Tsieineeg Traddodiadol"}
        zu{"Swlw"}
        zxx{"Dim cynnwys ieithyddol"}
    }
    Scripts{
        Arab{"Arabaidd"}
        Armn{"Armenaidd"}
        Beng{"Bengalaidd"}
        Bopo{"Bopomofo"}
        Brai{"Braille"}
        Cyrl{"Cyrilig"}
        Deva{"Defanagari"}
        Ethi{"Ethiopig"}
        Geor{"Georgaidd"}
        Grek{"Groegaidd"}
        Gujr{"Gwjarataidd"}
        Guru{"Gwrmwci"}
        Hang{"Hangwl"}
        Hani{"Han"}
        Hans{"Han symledig"}
        Hant{"Han traddodiadol"}
        Hebr{"Hebrëig"}
        Hira{"Hiragana"}
        Jpan{"Japaneaidd"}
        Kana{"Catacana"}
        Khmr{"Cmeraidd"}
        Knda{"Canaraidd"}
        Kore{"Coreaidd"}
        Laoo{"Laoaidd"}
        Latn{"Lladin"}
        Mlym{"Malayalamaidd"}
        Mong{"Mongolaidd"}
        Mymr{"Myanmaraidd"}
        Orya{"Orïaidd"}
        Sinh{"Sinhanaidd"}
        Taml{"Tamilaidd"}
        Telu{"Telwgw"}
        Thaa{"Thaa"}
        Thai{"Thai"}
        Tibt{"Tibetaidd"}
        Zsym{"Symbolau"}
        Zxxx{"Anysgrifenedig"}
        Zyyy{"Cyffredin"}
        Zzzz{"Ysgriflythyren anhysbys"}
    }
    Types{
        calendar{
            gregorian{"Calendr Gregori"}
        }
        collation{
            ducet{"Trefn Rhagosodedig Unicode"}
            search{"Chwilio at Ddibenion Cyffredinol"}
        }
        numbers{
            arab{"Digidau Arabig-Indig"}
            arabext{"Digidau Arabig-Indig Estynedig"}
            armn{"Rhifolion Armenaidd"}
            armnlow{"Rhifolion Armenaidd mewn Llythrennau Bychain"}
            beng{"Digidau Bengalaidd"}
            deva{"Digidau Defangarig"}
            ethi{"Rhifolion Ethiopig"}
            fullwide{"Digidau Lled Llawn"}
            geor{"Rhifolion Georgaidd"}
            grek{"Rhifolion Groegaidd"}
            greklow{"Rhifolion Groegaidd mewn Llythrennau Bychain"}
            gujr{"Digidau Gujarataidd"}
            guru{"Digidau guru"}
            hanidec{"Rhifolion Degol Tsieinëaidd"}
            hans{"Rhifolion Tsieinëaidd a symleiddwyd"}
            hansfin{"Rhifolion Ariannol Tsieinëaidd a symleiddwyd"}
            hant{"Rhifolion Tsieinëaidd Traddodiadol"}
            hantfin{"Rhifolion Ariannol Tsieinëaidd Traddodiadol"}
            hebr{"Rhifolion Hebrëig"}
            jpan{"Rhifolion Japaneaidd"}
            jpanfin{"Rhifolion Ariannol Japaneaidd"}
            khmr{"Digidau Chmeraidd"}
            knda{"Digidau Canaraidd"}
            laoo{"Digidau Laosaidd"}
            latn{"Digidau Gorllewinol"}
            mlym{"Digidau Malayalamaidd"}
            mymr{"Digidau Myanmar"}
            orya{"Digidau Orïaidd"}
            roman{"Rhifolion Rhufeinig"}
            romanlow{"Rhifolion Rhufeinig mewn Llythrennau Bychain"}
            taml{"Rhifolion Tamilaidd Traddodiadol"}
            tamldec{"Digidau Tamilaidd"}
            telu{"Digidau Telugu"}
            thai{"Digidau Thai"}
            tibt{"Digidau Tibetaidd"}
        }
    }
    Version{"2.0.88.66"}
    codePatterns{
        language{"Iaith: {0}"}
        script{"Sgript: {0}"}
        territory{"Rhanbarth: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
