﻿// ***************************************************************************
// *
// * 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"}
        ar_001{"Arabeg Modern Safonol"}
        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"}
        es_MX{"Sbaeneg Mecsico"}
        et{"Estoneg"}
        eu{"Basgeg"}
        fa{"Perseg"}
        fi{"Ffinneg"}
        fil{"Ffilipineg"}
        fiu{"Iaith Ffinno-Wgrig"}
        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"}
        gem{"Iaith Germanaidd"}
        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"}
        ine{"Iaith Indo-Ewropeaidd"}
        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"}
        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{"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.93.7"}
    codePatterns{
        language{"Iaith: {0}"}
        script{"Sgript: {0}"}
        territory{"Rhanbarth: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
