﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/sq.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/sq.xml
 */
sq{
    Keys{
        calendar{"Kalendar"}
        collation{"Radhitje"}
        currency{"Valuta"}
        numbers{"Numra"}
    }
    Languages{
        ab{"Abkazisht"}
        af{"Afrikane"}
        am{"Amarike"}
        ar{"Arabisht"}
        ar_001{"Arabishte Standarde Moderne"}
        as{"Asamezisht"}
        az{"Azere"}
        be{"Bjellorusisht"}
        bg{"Bullgarisht"}
        bn{"Bengalisht"}
        bo{"Tibetiane"}
        bs{"Boshnjakisht"}
        ca{"Katalonisht"}
        cs{"Çekisht"}
        cy{"Uellsisht"}
        da{"Danisht"}
        de{"Gjermanisht"}
        de_CH{"Gjermanisht (Zvicër-Dialekti i Alpeve)"}
        el{"Greqisht"}
        en{"Anglisht"}
        en_GB{"Anglisht (Britani)"}
        eo{"Esperanto"}
        es{"Spanjisht"}
        es_ES{"Spanjisht (Europë)"}
        et{"Estonisht"}
        eu{"Baske"}
        fa{"Persisht"}
        fi{"Finlandisht"}
        fil{"Filipinase"}
        fj{"Fixhiane"}
        fo{"Faroisht"}
        fr{"Frëngjisht"}
        fy{"Frizianisht"}
        ga{"Irlandisht"}
        gl{"Galike"}
        gn{"Guarane"}
        gsw{"Gjermanisht (Zvicër)"}
        gu{"Guxharatisht"}
        ha{"Hausisht"}
        haw{"Havajane"}
        he{"Hebraisht"}
        hi{"Indisht"}
        hr{"Kroatisht"}
        ht{"Haitianshe"}
        hu{"Hungarisht"}
        hy{"Armenisht"}
        id{"Indonezisht"}
        ig{"Igbe"}
        is{"Islandisht"}
        it{"Italisht"}
        ja{"Japonisht"}
        jv{"Javanisht"}
        ka{"Gjeorgjisht"}
        kk{"Kazake"}
        km{"Kmere (Kamboxhiane)"}
        kn{"Kanada"}
        ko{"Koreanisht"}
        ks{"Kashmire"}
        ku{"Kurde"}
        ky{"Kirgize"}
        la{"Latinisht"}
        lb{"Luksemburgase"}
        lo{"Laosisht"}
        lt{"Lituanisht"}
        lv{"Letonisht"}
        mg{"Malageze"}
        mi{"Maorisht"}
        mk{"Maqedonisht"}
        ml{"Malajalame"}
        mr{"Maratisht"}
        ms{"Malajisht"}
        mt{"Malteze"}
        my{"Birmanisht"}
        nb{"Bokmalisht (Norvegji)"}
        ne{"Nepalisht"}
        nl{"Holandisht"}
        nl_BE{"Fleminge"}
        nn{"Ninorske (Norvegji)"}
        or{"Orije"}
        pa{"Panxhabe"}
        pl{"Polonisht"}
        ps{"Pashto"}
        pt{"Portugalisht"}
        pt_PT{"Portugalisht (Europë)"}
        qu{"Keçua"}
        rm{"Rome"}
        ro{"Rumanisht"}
        ru{"Rusisht"}
        sa{"Sanskritisht"}
        sd{"Sindi"}
        sh{"Serbo-Kroatisht"}
        si{"Sinhale"}
        sk{"Sllovakisht"}
        sl{"Sllovenisht"}
        so{"Somalisht"}
        sq{"Shqip"}
        sr{"Serbisht"}
        su{"Sundanisht"}
        sv{"Suedisht"}
        sw{"Suahili"}
        ta{"Tamile"}
        te{"Teluge"}
        tg{"Taxhikisht"}
        th{"Tajlandisht"}
        ti{"Tigrinje"}
        tk{"Turkmenisht"}
        to{"Tonganisht"}
        tr{"Turqisht"}
        tt{"Tatarisht"}
        ug{"Ujgure"}
        uk{"Ukrainisht"}
        und{"E panjohur"}
        ur{"Urdu"}
        uz{"Uzbeke"}
        vi{"Vietnamisht"}
        wo{"Ulufisht"}
        xh{"Xhose"}
        yo{"Jorubisht"}
        zgh{"Tamazishte Standarde Marokene"}
        zh{"Kinezisht"}
        zh_Hans{"Kinezçe e Thjeshtuar"}
        zh_Hant{"Kinezçe Tradicionale"}
        zu{"Zulu"}
        zxx{"Mungesë përmbajtjeje gjuhësore"}
    }
    LanguagesShort{
        en_GB{"Anglisht (Britani)"}
        en_US{"Anglisht (SHBA)"}
    }
    Scripts{
        Arab{"Arabik"}
        Armn{"Armen"}
        Beng{"Bengal"}
        Bopo{"Bopomof"}
        Brai{"Brail"}
        Cyrl{"Cirilik"}
        Deva{"Devanagar"}
        Ethi{"Etiopian"}
        Geor{"Gjeorgjian"}
        Grek{"Grek"}
        Gujr{"Guxharatas"}
        Guru{"Gurmuk"}
        Hang{"Hangul"}
        Hani{"Han"}
        Hans{"I Thjeshtuar"}
        Hant{"Tradicional"}
        Hebr{"Hebraik"}
        Hira{"Hiragan"}
        Jpan{"Japonez"}
        Kana{"Katakan"}
        Khmr{"Kmer"}
        Knda{"Kanada"}
        Kore{"Korean"}
        Laoo{"Lao"}
        Latn{"Latin"}
        Mlym{"Malajalam"}
        Mong{"Mongol"}
        Mymr{"Birman"}
        Orya{"Orija"}
        Sinh{"Sinhal"}
        Taml{"Tamil"}
        Telu{"Telug"}
        Thaa{"Tana"}
        Thai{"Tajlandez"}
        Tibt{"Tibetian"}
        Zsym{"Me simbole"}
        Zxxx{"I pashkruar"}
        Zyyy{"I zakonshëm"}
        Zzzz{"I panjohur"}
    }
    Scripts%stand-alone{
        Hans{"Han i Thjeshtësuar"}
        Hant{"Han Tradicional"}
    }
    Types{
        calendar{
            buddhist{"Kalendari Budist"}
            chinese{"Kalendari Kinez"}
            coptic{"Kalendari Koptik"}
            dangi{"Kalendari Dangi"}
            ethiopic{"Kalendari Etiopas"}
            ethiopic-amete-alem{"Kalendari Etiopas Amete Alem"}
            gregorian{"Kalendari Gregorian"}
            hebrew{"Kalendari Hebraik"}
            indian{"Kalendari Kombëtar Indian"}
            islamic{"Kalendari Islamik"}
            islamic-civil{"Kalendari Islamik (tabelor, periudha civile)"}
            islamic-tbla{"Kalendari Islamik (tabelor, epoka austromikale)"}
            islamic-umalqura{"Kalendari Islamik (Um al-Qura)"}
            iso8601{"Kalendari ISO-8601"}
            japanese{"Kalendari Japonez"}
            persian{"Kalendari Persian"}
            roc{"Kalendari Kinez (Minguo)"}
        }
        collation{
            big5han{"Radhitje e kinezishtes tradicionale - Big5"}
            dictionary{"Radhitje fjalori"}
            ducet{"Radhitje Unikode e parazgjedhur"}
            gb2312han{"Radhitje e kinezishtes së thjeshtësuar - GB2312"}
            phonebook{"Radhitje libri telefonik"}
            pinyin{"Radhitje pinini"}
            reformed{"Radhitje e reformuar"}
            search{"Kërkim i përgjithshëm"}
            standard{"Radhitje standarde"}
        }
        numbers{
            arab{"Shifra indo-arabe"}
            arabext{"Shifra indo-arabe të zgjatura"}
            armn{"Numra armenë"}
            armnlow{"Numra armenë të vegjël"}
            beng{"Numra bengalë"}
            deva{"Shifra devanagari"}
            ethi{"Numra etiopas"}
            fullwide{"Shifra me largësi të brendshme"}
            geor{"Numra gjeorgjianë"}
            grek{"Numra grekë"}
            greklow{"Numra grekë të vegjël"}
            gujr{"Shifra guxharati"}
            guru{"Shifra gurmuki"}
            hanidec{"Numra dhjetorë kinezë"}
            hans{"Numra të kinezishtes së thjeshtësuar"}
            hansfin{"Numra financiarë të kinezishtes së thjeshtësuar"}
            hant{"Numra të kinezishtes tradicionale"}
            hantfin{"Numra financiarë të kinezishtes tradicionale"}
            hebr{"Numra hebraikë"}
            jpan{"Numra japonezë"}
            jpanfin{"Numra financiarë japonezë"}
            khmr{"Shifra kmere"}
            knda{"Shifra Kenëda"}
            laoo{"Shifra lao"}
            latn{"Shifra perëndimore-latine"}
            mlym{"Shifra malajalame"}
            mymr{"Shifra mianmari"}
            orya{"Shifra orije"}
            roman{"Numra romakë"}
            romanlow{"Numra romakë të vegjël"}
            taml{"Numra tamile tradicionale"}
            tamldec{"Shifra tamile"}
            telu{"Shifra teluguje"}
            thai{"Shifra tajlandeze"}
            tibt{"Shifra tibetiane"}
        }
    }
    Version{"2.0.98.52"}
    codePatterns{
        language{"Gjuha: {0}"}
        script{"Shkrimi: {0}"}
        territory{"Rajoni: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
