﻿// ***************************************************************************
// *
// * Copyright (C) 2014 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"}
        am{"Amhareg"}
        ang{"Hen Saesneg"}
        ar{"Arabeg"}
        ar_001{"Arabeg Modern Safonol"}
        arc{"Aramaeg"}
        as{"Asameg"}
        az{"Aserbaijaneg"}
        be{"Belarwseg"}
        bg{"Bwlgareg"}
        bn{"Bengaleg"}
        bo{"Tibeteg"}
        br{"Llydaweg"}
        bs{"Bosnieg"}
        ca{"Catalaneg"}
        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"}
        es_MX{"Sbaeneg Mecsico"}
        et{"Estoneg"}
        eu{"Basgeg"}
        fa{"Perseg"}
        fi{"Ffinneg"}
        fil{"Ffilipineg"}
        fj{"Ffijïeg"}
        fo{"Ffaröeg"}
        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"}
        gl{"Galisieg"}
        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"}
        is{"Islandeg"}
        it{"Eidaleg"}
        ja{"Japaneeg"}
        jv{"Jafanaeg"}
        ka{"Georgeg"}
        kk{"Casacheg"}
        km{"Chmereg"}
        kn{"Kannada"}
        ko{"Coreeg"}
        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"}
        mk{"Macedoneg"}
        ml{"Malayalam"}
        mn{"Mongoleg"}
        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"}
        ro_MD{"Moldofeg"}
        ru{"Rwseg"}
        sa{"Sansgrit"}
        sco{"Sgoteg"}
        sd{"Sindhi"}
        sga{"Hen Wyddeleg"}
        sh{"Serbo-Croateg"}
        si{"Sinhaleg"}
        sk{"Slofaceg"}
        sl{"Slofeneg"}
        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{"Tigrinya"}
        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"}
        zgh{"Tamazight Safonol Moroco"}
        zh{"Tsieineeg"}
        zh_Hans{"Tsieineeg Symledig"}
        zh_Hant{"Tsieineeg Traddodiadol"}
        zu{"Swlw"}
        zxx{"Dim cynnwys ieithyddol"}
    }
    LanguagesShort{
        en_GB{"Saesneg (DU)"}
    }
    Scripts{
        Arab{"Arabaidd"}
        Armn{"Armenaidd"}
        Beng{"Bengalaidd"}
        Bopo{"Bopomofo"}
        Brai{"Braille"}
        Cyrl{"Cyrilig"}
        Deva{"Devanāgarī"}
        Ethi{"Ethiopig"}
        Geor{"Georgaidd"}
        Grek{"Groegaidd"}
        Gujr{"Gujarataidd"}
        Guru{"Gwrmwci"}
        Hang{"Hangul"}
        Hani{"Han"}
        Hans{"Symledig"}
        Hant{"Traddodiadol"}
        Hebr{"Hebreig"}
        Hira{"Hiragana"}
        Jpan{"Japaneaidd"}
        Kana{"Catacana"}
        Khmr{"Chmeraidd"}
        Knda{"Canaraidd"}
        Kore{"Coreaidd"}
        Laoo{"Laoaidd"}
        Latn{"Lladin"}
        Mlym{"Malayalamaidd"}
        Mong{"Mongolaidd"}
        Mymr{"Myanmaraidd"}
        Orya{"Orïaidd"}
        Sinh{"Sinhanaidd"}
        Taml{"Tamilaidd"}
        Telu{"Telugu"}
        Thaa{"Thaa"}
        Thai{"Thai"}
        Tibt{"Tibetaidd"}
        Zsym{"Symbolau"}
        Zxxx{"Anysgrifenedig"}
        Zyyy{"Cyffredin"}
        Zzzz{"Sgript anhysbys"}
    }
    Scripts%stand-alone{
        Hans{"Han symledig"}
        Hant{"Han traddodiadol"}
    }
    Types{
        calendar{
            gregorian{"Calendr Gregori"}
        }
        collation{
            ducet{"Trefn Rhagosodedig Unicode"}
            search{"Chwilio at Ddibenion Cyffredinol"}
            standard{"Trefn Safonol"}
        }
        numbers{
            arab{"Digidau Arabig-Indig"}
            arabext{"Digidau Arabig-Indig Estynedig"}
            armn{"Rhifolion Armenaidd"}
            armnlow{"Rhifolion Armenaidd mewn Llythrennau Bychain"}
            beng{"Digidau Bengalaidd"}
            deva{"Digidau Devanāgarīg"}
            ethi{"Rhifolion Ethiopig"}
            fullwide{"Digidau Lled Llawn"}
            geor{"Rhifolion Georgaidd"}
            grek{"Rhifolion Groegaidd"}
            greklow{"Rhifolion Groegaidd mewn Llythrennau Bychain"}
            gujr{"Digidau Gujarataidd"}
            guru{"Digidau Gwrmwcaidd"}
            hanidec{"Rhifolion Degol Tsieineaidd"}
            hans{"Rhifolion Tsieineaidd Symledig"}
            hansfin{"Rhifolion Ariannol Tsieineaidd Symledig"}
            hant{"Rhifolion Tsieineaidd Traddodiadol"}
            hantfin{"Rhifolion Ariannol Tsieineaidd Traddodiadol"}
            hebr{"Rhifolion Hebreig"}
            jpan{"Rhifolion Japaneaidd"}
            jpanfin{"Rhifolion Ariannol Japaneaidd"}
            khmr{"Digidau Chmeraidd"}
            knda{"Digidau Canaraidd"}
            laoo{"Digidau Laoaidd"}
            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.98.52"}
    codePatterns{
        language{"Iaith: {0}"}
        script{"Sgript: {0}"}
        territory{"Rhanbarth: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
