﻿// ***************************************************************************
// *
// * Copyright (C) 2009 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/cs.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/cs.xml
 */
cs{
    Keys{
        calendar{"Kalendář"}
        collation{"Třídění"}
        currency{"Měna"}
    }
    Languages{
        aa{"afarština"}
        ab{"abcházština"}
        ae{"avestánština"}
        af{"afrikánština"}
        ain{"ainština"}
        ak{"akanština"}
        akk{"akkadština"}
        am{"amharština"}
        an{"aragonština"}
        anp{"angika"}
        ar{"arabština"}
        arp{"arapažština"}
        as{"assaméština"}
        av{"avarština"}
        ay{"aymárština"}
        az{"azerbajdžánština"}
        ba{"baskirština"}
        bal{"balúčština"}
        be{"běloruština"}
        bg{"bulharština"}
        bh{"biharština"}
        bho{"bhojpurština"}
        bi{"bislámština"}
        bm{"bambarština"}
        bn{"bengálština"}
        bo{"tibetština"}
        br{"bretaňština"}
        bs{"bosenština"}
        ca{"katalánština"}
        co{"korsičtina"}
        crh{"krymská turečtina"}
        cs{"čeština"}
        cy{"velština"}
        da{"dánština"}
        de{"němčina"}
        de_AT{"německy (Rakousko)"}
        dz{"bhútánština"}
        el{"řečtina"}
        en{"angličtina"}
        en_CA{"anglicky (Kanada)"}
        en_US{"angličtina (USA)"}
        eo{"esperanto"}
        es{"španělština"}
        et{"estonština"}
        eu{"baskičtina"}
        fa{"perština"}
        fi{"finština"}
        fil{"tagalogština"}
        fj{"fidži"}
        fo{"faerština"}
        fr{"francouzština"}
        fr_CA{"francouzsky (Kanada)"}
        fy{"fríština"}
        ga{"irština"}
        gd{"skotská galština"}
        gl{"haličština"}
        gn{"guaranština"}
        grc{"starořečtina"}
        gu{"gujaratština"}
        gv{"manština"}
        ha{"hausa"}
        haw{"havajský"}
        he{"hebrejština"}
        hi{"hindština"}
        hr{"chorvatština"}
        hu{"maďarština"}
        hy{"arménština"}
        ia{"interlingua"}
        id{"indonéština"}
        ie{"interlingue"}
        ik{"inupiakština"}
        is{"islandština"}
        it{"italština"}
        iu{"inuktitutština"}
        ja{"japonština"}
        jv{"javánština"}
        ka{"gruzínština"}
        kk{"kazachština"}
        kl{"grónština"}
        km{"kambodžština"}
        kn{"kannadština"}
        ko{"korejština"}
        ks{"kašmírština"}
        ku{"kurdština"}
        ky{"kirgizština"}
        la{"latina"}
        lb{"Lucemburština"}
        ln{"lingalština"}
        lo{"laoština"}
        lt{"litevština"}
        lv{"lotyština"}
        mag{"magadhiština"}
        mai{"maithiliština"}
        mg{"malgaština"}
        mi{"maorština"}
        mk{"makedonština"}
        ml{"malabarština"}
        mn{"mongolština"}
        mo{"moldavština"}
        mr{"marathi"}
        ms{"malajština"}
        mt{"maltština"}
        my{"barmština"}
        na{"nauru"}
        ne{"nepálština"}
        nl{"nizozemština"}
        nn{"norština (nynorsk)"}
        no{"norština"}
        oc{"occitan"}
        om{"Oromo (Afan)"}
        or{"oriya"}
        pa{"paňdžábština"}
        pl{"polština"}
        ps{"Pashto (Pushto)"}
        pt{"portugalština"}
        qu{"kečuánština"}
        rm{"rétorománština"}
        rn{"kirundi"}
        ro{"rumunština"}
        ru{"ruština"}
        rw{"kinyarwandština"}
        sa{"sanskrt"}
        sd{"sindhi"}
        sg{"sangho"}
        sh{"srbochorvatština"}
        si{"sinhálština"}
        sk{"slovenština"}
        sl{"slovinština"}
        sla{"slovanský jazyk"}
        sm{"samoyština"}
        sn{"shona"}
        so{"somálština"}
        sq{"albánština"}
        sr{"srbština"}
        ss{"siswatština"}
        st{"sesotho"}
        su{"sundanština"}
        sux{"sumerský"}
        sv{"švédština"}
        sw{"svahilština"}
        ta{"tamilština"}
        te{"telugština"}
        tg{"tádžičtina"}
        th{"thajština"}
        ti{"tigrinijština"}
        tk{"turkmenština"}
        tl{"tagalog"}
        tlh{"klingonština"}
        tn{"setswanština"}
        to{"tonga"}
        tpi{"tok pisin"}
        tr{"turečtina"}
        ts{"tsonga"}
        tt{"tatarština"}
        tw{"twi"}
        ty{"tahitština"}
        ug{"uighurština"}
        uga{"ugaritština"}
        uk{"ukrajinština"}
        und{"neznámý nebo neplatný jazyk"}
        ur{"urdština"}
        uz{"uzbečtina"}
        vi{"vietnamština"}
        vo{"volapuk"}
        wa{"valonština"}
        wo{"wolof"}
        xh{"xhosa"}
        yi{"jidiš"}
        yo{"yoruba"}
        za{"zhuang"}
        zh{"čínština"}
        zh_Hans{"čínština (zjednodušená)"}
        zh_Hant{"čínština (tradiční)"}
        zu{"zulu"}
    }
    Scripts{
        Arab{"Arabský"}
        Armn{"Arménský"}
        Bali{"Balijský"}
        Batk{"Batacký"}
        Beng{"Bengálský"}
        Blis{"Bliss"}
        Bopo{"Bopomofo"}
        Brah{"Bráhmí"}
        Brai{"Braillovo písmo"}
        Bugi{"Buginský"}
        Buhd{"Buhid"}
        Cans{"Slabičné písmo kanadských domorodců"}
        Cham{"Čam"}
        Cher{"Čerokí"}
        Cirt{"Cirth"}
        Copt{"Koptský"}
        Cyrl{"Cyrilice"}
        Cyrs{"Cyrilice (staroslověnská)"}
        Deva{"Devanágarí"}
        Dsrt{"Deseret"}
        Egyd{"Egyptský démotický"}
        Egyh{"Egyptský hieratický"}
        Egyp{"Egyptské hieroglyfy"}
        Ethi{"Etiopský"}
        Geor{"Gruzínský"}
        Glag{"Hlaholice"}
        Goth{"Gotický"}
        Grek{"Řecký"}
        Gujr{"Gudžarátí"}
        Guru{"Gurmukhí"}
        Hang{"Hangul"}
        Hani{"Han"}
        Hano{"Hanunoo"}
        Hebr{"Hebrejský"}
        Hira{"Hiragana"}
        Hmng{"Hmongský"}
        Hrkt{"Katakana nebo Hiragana"}
        Hung{"Staromaďarský"}
        Inds{"Harappský"}
        Ital{"Etruský"}
        Java{"Jávský"}
        Jpan{"Japonský"}
        Kali{"Kayah li"}
        Kana{"Katakana"}
        Khar{"Kháróští"}
        Khmr{"Khmerský"}
        Knda{"Kannadský"}
        Laoo{"Laoský"}
        Latf{"Latinka (fraktura)"}
        Latg{"Latinka (gaelská)"}
        Latn{"Latinka"}
        Lepc{"Lepčský"}
        Lina{"Lineární A"}
        Linb{"Lineární B"}
        Mand{"Mandejský"}
        Maya{"Mayské hieroglyfy"}
        Mero{"Meroitický"}
        Mlym{"Malajálamský"}
        Mong{"Mongolský"}
        Mymr{"Barmský"}
        Ogam{"Ogham"}
        Orkh{"Orchonský"}
        Orya{"Urijský"}
        Osma{"Osmanský"}
        Perm{"Staropermský"}
        Phnx{"Fénický"}
        Plrd{"Pollardova fonetická abeceda"}
        Roro{"Rongorongo"}
        Runr{"Runové písmo"}
        Shaw{"Shaw"}
        Sinh{"Sinhálský"}
        Syrc{"Syrský"}
        Syre{"Syrský (estrangelo)"}
        Syrj{"Syrský (západní)"}
        Syrn{"Syrský (východní)"}
        Tagb{"Tagbanwa"}
        Taml{"Tamilský"}
        Telu{"Telužský"}
        Teng{"Tengwar"}
        Tfng{"Berberský"}
        Tglg{"Tagalský"}
        Thaa{"Thaana"}
        Thai{"Thajský"}
        Tibt{"Tibetský"}
        Ugar{"Ugaritské klínové písmo"}
        Vaii{"Vai"}
        Visp{"Viditelná řeč"}
        Xpeo{"Staroperské klínové písmo"}
        Xsux{"Sumero-akkadské klínové písmo"}
        Yiii{"Yi"}
        Zyyy{"Obecný"}
        Zzzz{"Neznámý nebo neplatný skript"}
    }
    Types{
        calendar{
            buddhist{"Buddhistický kalendář"}
            chinese{"Čínský kalendář"}
            gregorian{"Gregoriánský kalendář"}
            hebrew{"Hebrejský kalendář"}
            islamic{"Muslimský kalendář"}
            islamic-civil{"Muslimský občanský kalendář"}
            japanese{"Japonský kalendář"}
        }
    }
    Version{"2.0.42.82"}
    codePatterns{
        language{"Jazyk: {0}"}
        territory{"Region: {0}"}
    }
}
