﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/uz_Cyrl.xml
// *
// ***************************************************************************
uz_Cyrl{
    %%Parent{"root"}
    Keys{
        calendar{"Календарь"}
        collation{"Саралаш тартиби"}
        currency{"Валюта"}
        numbers{"Рақамлар"}
    }
    Languages{
        ab{"Абхазча"}
        af{"Африканча"}
        am{"Амхарча"}
        ar{"Арабча"}
        as{"Ассамча"}
        az{"Озарбайжонча"}
        be{"Беларусча"}
        bg{"Болгарча"}
        bn{"Бенгалча"}
        bo{"Тибетча"}
        bs{"Боснияча"}
        ca{"Каталанча"}
        cs{"Чехча"}
        cy{"Уэлсча"}
        da{"Данияча"}
        de{"Олмонча"}
        el{"Грекча"}
        en{"Инглизча"}
        eo{"Эсперанто"}
        es{"Испанча"}
        es_419{"Лотин Америка испанчаси"}
        et{"Эстонча"}
        eu{"Баскча"}
        fa{"Форсча"}
        fi{"Финча"}
        fil{"Филипино"}
        fj{"Фижича"}
        fo{"Фарэрча"}
        fr{"Французча"}
        fy{"Ғарбий фризианча"}
        ga{"Ирландча"}
        gl{"Галицийча"}
        gn{"Гуарани"}
        gsw{"Швейцария немисчаси"}
        gu{"Гужарати"}
        ha{"Хауса"}
        haw{"Гавайча"}
        he{"Иброний"}
        hi{"Ҳиндча"}
        hr{"Хорватча"}
        ht{"Гаитианча"}
        hu{"Венгрча"}
        hy{"Арманча"}
        id{"Индонезияча"}
        ig{"Игбо"}
        is{"Исландча"}
        it{"Италянча"}
        ja{"Японча"}
        jv{"Яванча"}
        ka{"Грузинча"}
        kk{"Қозоқча"}
        km{"Хмерча"}
        kn{"Каннада"}
        ko{"Корейсча"}
        ks{"Кашмирча"}
        ku{"Курдча"}
        ky{"Қирғизча"}
        la{"Лотинча"}
        lb{"Люксембургча"}
        lo{"Лао"}
        lt{"Литвача"}
        lv{"Латишча"}
        mg{"Малагаси"}
        mi{"Маори"}
        mk{"Македонча"}
        ml{"Малайалам"}
        mr{"Марати"}
        ms{"Малайча"}
        mt{"Мальтача"}
        my{"Бирманча"}
        nb{"Норвегча Бокмал"}
        ne{"Непалча"}
        nl{"Голландча"}
        nl_BE{"Фламандча"}
        nn{"Норвегча Нинорск"}
        or{"Ория"}
        pa{"Панжобча"}
        pl{"Полякча"}
        ps{"Пушту"}
        pt{"Португалча"}
        qu{"Квечуа"}
        rm{"Романча"}
        ro{"Руминча"}
        ru{"Русча"}
        sa{"Санскритча"}
        sd{"Синдхи"}
        si{"Синхала"}
        sk{"Словакча"}
        sl{"Словенча"}
        so{"Сомалича"}
        sq{"Албанча"}
        sr{"Сербча"}
        su{"Сунданча"}
        sv{"Шведча"}
        sw{"Суахили"}
        ta{"Тамилча"}
        te{"Телугу"}
        tg{"Тожикча"}
        th{"Тайча"}
        ti{"Тигринья"}
        tk{"Туркманча"}
        to{"Тонгоча"}
        tr{"Туркча"}
        tt{"Татарча"}
        ug{"Уйғурча"}
        uk{"Украинча"}
        und{"Номаълум тил"}
        ur{"Урду"}
        uz{"Ўзбек"}
        vi{"Вьетнамча"}
        wo{"Волофча"}
        xh{"Хоса"}
        yo{"Йоруба"}
        zgh{"Стандарт Марокаш Тамазит"}
        zh{"Хитойча"}
        zu{"Зулу"}
        zxx{"Тил таркиби йўқ"}
    }
    Languages%short{
        en_GB{"Бирлашган Қироллик"}
    }
    Scripts{
        Arab{"Араб"}
        Armn{"Арман"}
        Beng{"Бенгали"}
        Bopo{"Бопомофо"}
        Brai{"Браилле"}
        Cyrl{"Кирил"}
        Deva{"Девангари"}
        Ethi{"Ҳабаш"}
        Geor{"Грузин"}
        Grek{"Юнон"}
        Gujr{"Гужарати"}
        Guru{"Гурмухи"}
        Hang{"Хангул"}
        Hani{"Хан"}
        Hans{"Соддалаштирилган"}
        Hant{"Анъанавий"}
        Hebr{"Иброний"}
        Hira{"Хирагана"}
        Jpan{"Япон"}
        Kana{"Катакана"}
        Khmr{"Хмер"}
        Knda{"Каннада"}
        Kore{"Корейс"}
        Laoo{"Лао"}
        Latn{"Лотин"}
        Mlym{"Малайалам"}
        Mong{"Мўғулча"}
        Mymr{"Мьянма"}
        Orya{"Ория"}
        Sinh{"Синхала"}
        Taml{"Тамил"}
        Telu{"Телугу"}
        Thaa{"Таана"}
        Thai{"Тай"}
        Tibt{"Тибет"}
        Zsym{"Рамзлар"}
        Zxxx{"Ёзилмаган"}
        Zyyy{"Умумий"}
        Zzzz{"Номаълум шрифт"}
    }
    Scripts%stand-alone{
        Hans{"Соддалаштирилган"}
        Hant{"Анъанавий"}
    }
    Types{
        calendar{
            gregorian{"Григориан календари"}
        }
        collation{
            ducet{"Сукут бўйича саралаш тартиби"}
            search{"Умумий қидириш"}
            standard{"Стандарт саралаш тартиби"}
        }
        numbers{
            arab{"Араб-ҳинд рақамлари"}
            arabext{"Кенгайтирилган араб-ҳинд рақамлари"}
            armn{"Арман сонлари"}
            armnlow{"Арман кичик сонлари"}
            beng{"Бенгали рақамлари"}
            deva{"Деванагари рақамлари"}
            ethi{"Ҳабаш сонлари"}
            fullwide{"Тўлиқ кенгликдаги рақамлар"}
            geor{"Грузин сонлари"}
            grek{"Грек сонлари"}
            greklow{"Грек кичик сонлари"}
            gujr{"Гужарати рақамлари"}
            guru{"Гурмухи рақамлари"}
            hanidec{"Хитой ўнлик сонлари"}
            hans{"Соддалаштирилган Хитой сонлари"}
            hansfin{"Соддалаштирилган Хитой молия сонлари"}
            hant{"Анъанавий Хитой сонлари"}
            hantfin{"Анъанавий Хитой молия сонлари"}
            hebr{"Иброний сонлари"}
            jpan{"Япония сонлари"}
            jpanfin{"Япония молия сонлари"}
            khmr{"Хмер рақамлари"}
            knda{"Каннада рақамлари"}
            laoo{"Лао рақамлари"}
            latn{"Ғарб рақамлари"}
            mlym{"Малайалам рақамлари"}
            mymr{"Мьянма рақамлари"}
            orya{"Ория рақамлари"}
            roman{"Рим сонлари"}
            romanlow{"Рим кичик сонлари"}
            taml{"Анъанавий Тамил сонлари"}
            tamldec{"Тамил рақамлари"}
            telu{"Телугу рақамлари"}
            thai{"Тай рақамлари"}
            tibt{"Тибет рақамлари"}
        }
    }
    Version{"2.1.10.42"}
    codePatterns{
        language{"Тил: {0}"}
        script{"{0}"}
        territory{"{0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
