﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/uz.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/uz.xml
 */
uz{
    Keys{
        calendar{"Kalendar"}
        collation{"Saralash tartibi"}
        currency{"Valyuta"}
        numbers{"Raqamlar"}
    }
    Languages{
        ab{"abxazcha"}
        af{"afrikancha"}
        am{"amxarcha"}
        ar{"arabcha"}
        ar_001{"zamonavij standart arabcha"}
        as{"assamcha"}
        az{"ozarbayjoncha"}
        be{"belaruscha"}
        bg{"bolgarcha"}
        bn{"bengalcha"}
        bo{"tibetcha"}
        bs{"bosniyacha"}
        ca{"katalancha"}
        cs{"chexcha"}
        cy{"uelscha"}
        da{"daniyacha"}
        de{"olmoncha"}
        de_AT{"Avstriya olmonchasi"}
        de_CH{"Shvesariya olmonchasi"}
        el{"grekcha"}
        en{"inglizcha"}
        en_AU{"Avstraliya inglizchasi"}
        en_CA{"Kanada inglizchasi"}
        en_GB{"Britaniya inglizchasi"}
        en_US{"AQSh inglizchasi"}
        eo{"esperanto"}
        es{"ispancha"}
        es_419{"Lotin Amerika ispanchasi"}
        es_ES{"Yevropa ispanchasi"}
        es_MX{"Meksika ispanchasi"}
        et{"estoncha"}
        eu{"baskcha"}
        fa{"forscha"}
        fi{"fincha"}
        fil{"filipino"}
        fj{"fijicha"}
        fo{"farercha"}
        fr{"fransuzcha"}
        fr_CA{"Kanada fransuzchasi"}
        fr_CH{"Shvesariya fransuzchasi"}
        fy{"gʻarbiy friziancha"}
        ga{"irlandcha"}
        gl{"galitsiycha"}
        gn{"guarani"}
        gsw{"shveysariya nemischasi"}
        gu{"gujarati"}
        ha{"xausa"}
        haw{"gavaycha"}
        he{"ibroniy"}
        hi{"hindcha"}
        hr{"xorvatcha"}
        ht{"gaitiancha"}
        hu{"vengrcha"}
        hy{"armancha"}
        id{"indoneziyacha"}
        ig{"igbo"}
        is{"islandcha"}
        it{"italyancha"}
        ja{"yaponcha"}
        jv{"yavancha"}
        ka{"gruzincha"}
        kk{"qozoqcha"}
        km{"xmercha"}
        kn{"kannada"}
        ko{"koreyscha"}
        ks{"kashmircha"}
        ku{"kurdcha"}
        ky{"qirgʻizcha"}
        la{"lotincha"}
        lb{"lyuksemburgcha"}
        lo{"lao"}
        lt{"litvacha"}
        lv{"latishcha"}
        mg{"malagasi"}
        mi{"maori"}
        mk{"makedoncha"}
        ml{"malayalam"}
        mr{"marati"}
        ms{"malaycha"}
        mt{"maltacha"}
        my{"birmancha"}
        nb{"norvegcha bokmal"}
        ne{"nepalcha"}
        nl{"gollandcha"}
        nl_BE{"flamandcha"}
        nn{"norvegcha ninorsk"}
        or{"oriya"}
        pa{"panjobcha"}
        pl{"polyakcha"}
        ps{"pushtu"}
        pt{"portugalcha"}
        pt_BR{"Braziliya portugalchasi"}
        pt_PT{"Yevropa portugalchasi"}
        qu{"kvechua"}
        rm{"romancha"}
        ro{"rumincha"}
        ru{"ruscha"}
        sa{"sanskritcha"}
        sd{"sindxi"}
        si{"sinxala"}
        sk{"slovakcha"}
        sl{"slovencha"}
        so{"somalicha"}
        sq{"albancha"}
        sr{"serbcha"}
        su{"sundancha"}
        sv{"shvedcha"}
        sw{"suaxili"}
        ta{"tamilcha"}
        te{"telugu"}
        tg{"tojikcha"}
        th{"taycha"}
        ti{"tigrinya"}
        tk{"turkmancha"}
        to{"tongocha"}
        tr{"turkcha"}
        tt{"tatarcha"}
        ug{"uygʻurcha"}
        uk{"ukraincha"}
        und{"nomaʼlum til"}
        ur{"urdu"}
        uz{"oʻzbekcha"}
        vi{"vyetnamcha"}
        wo{"volofcha"}
        xh{"xosa"}
        yo{"yoruba"}
        zgh{"standart marokash tamazit"}
        zh{"xitoycha"}
        zh_Hans{"soddalashtirilgan xitoycha"}
        zh_Hant{"anʼanaviy xitoycha"}
        zu{"zulu"}
        zxx{"til tarkibi yoʻq"}
    }
    LanguagesShort{
        en_GB{"Britaniya inglizchasi"}
        en_US{"AQSh inglizchasi"}
    }
    Scripts{
        Arab{"Arab"}
        Armn{"Arman"}
        Beng{"Bengali"}
        Bopo{"Bopomofo"}
        Brai{"Braille"}
        Cyrl{"Kiril"}
        Deva{"Devangari"}
        Ethi{"Habash"}
        Geor{"Gruzin"}
        Grek{"Yunon"}
        Gujr{"Gujarati"}
        Guru{"Gurmuxi"}
        Hang{"Xangul"}
        Hani{"Xan"}
        Hans{"Soddalashtirilgan"}
        Hant{"Anʼanaviy"}
        Hebr{"Ibroniy"}
        Hira{"Xiragana"}
        Jpan{"Yapon"}
        Kana{"Katakana"}
        Khmr{"Xmer"}
        Knda{"Kannada"}
        Kore{"Koreya"}
        Laoo{"Lao"}
        Latn{"Lotin"}
        Mlym{"Malayalam"}
        Mong{"Moʻgʻulcha"}
        Mymr{"Myanma"}
        Orya{"Oriya"}
        Sinh{"Sinxala"}
        Taml{"Tamil"}
        Telu{"Telugu"}
        Thaa{"Taana"}
        Thai{"Tay"}
        Tibt{"Tibet"}
        Zsym{"Ramzlar"}
        Zxxx{"Yozilmagan"}
        Zyyy{"Umumiy"}
        Zzzz{"Nomaʼlum shrift"}
    }
    Scripts%stand-alone{
        Hans{"Soddalashtirilgan"}
        Hant{"Anʼanaviy"}
    }
    Types{
        calendar{
            gregorian{"Grigorian kalendari"}
        }
        collation{
            ducet{"Sukut boʻyicha saralash tartibi"}
            search{"Umumiy qidirish"}
            standard{"Standart tariblash"}
        }
        numbers{
            arab{"Arab-hind raqamlari"}
            arabext{"Kengaytirilgan arab-hind raqamlari"}
            armn{"Arman sonlari"}
            armnlow{"Arman kichik sonlari"}
            beng{"Bengali raqamlari"}
            deva{"Devanagari raqamlari"}
            ethi{"Habash sonlari"}
            fullwide{"Toʻliq kenglikdagi raqamlar"}
            geor{"Gruzin sonlari"}
            grek{"Grek sonlari"}
            greklow{"Grek kichik sonlari"}
            gujr{"Gujarati raqamlari"}
            guru{"Gurmuxi raqamlari"}
            hanidec{"Xitoy oʻnlik sonlari"}
            hans{"Soddalashtirilgan Xitoy sonlari"}
            hansfin{"Soddalashtirilgan Xitoy moliya sonlari"}
            hant{"Anʼanaviy Xitoy sonlari"}
            hantfin{"Anʼanaviy Xitoy moliya sonlari"}
            hebr{"Ibroniy sonlari"}
            jpan{"Yaponiya sonlari"}
            jpanfin{"Yaponiya moliya sonlari"}
            khmr{"Xmer raqamlari"}
            knda{"Kannada raqamlari"}
            laoo{"Lao raqamlari"}
            latn{"Gʻarb raqamlari"}
            mlym{"Malayalam raqamlari"}
            mymr{"Myanma raqamlari"}
            orya{"Oriya raqamlari"}
            roman{"Rim sonlari"}
            romanlow{"Rim kichik sonlari"}
            taml{"Anʼanaviy Tamil sonlari"}
            tamldec{"Tamil raqamlari"}
            telu{"Telugu raqamlari"}
            thai{"Tay raqamlari"}
            tibt{"Tibet raqamlari"}
        }
    }
    Version{"2.0.92.87"}
    codePatterns{
        language{"Til: {0}"}
        script{"Shrift: {0}"}
        territory{"Mintaqa: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
