﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/gl.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/gl.xml
 */
gl{
    Keys{
        calendar{"Calendario"}
        colAlternate{"Ignorar clasificación de símbolos"}
        colBackwards{"Clasificación de acentos invertida"}
        colCaseFirst{"Orde de maiúsculas/minúsculas"}
        colCaseLevel{"Clasificación que distingue entre maiúsculas e minúsculas"}
        colHiraganaQuaternary{"Clasificación Kana"}
        colNormalization{"Clasificación normalizada"}
        colNumeric{"Clasificación numérica"}
        colStrength{"Forza de clasificación"}
        collation{"Orde de clasificación"}
        currency{"Moeda"}
        numbers{"Números"}
        timezone{"Fuso horario"}
        va{"Variante local"}
        variableTop{"Clasificar como símbolos"}
        x{"Uso privado"}
    }
    Languages{
        ab{"abkhazo"}
        ach{"acoli"}
        af{"afrikaans"}
        agq{"aghem"}
        ak{"akán"}
        am{"amárico"}
        an{"aragonés"}
        ar{"árabe"}
        ar_001{"árabe estándar moderno"}
        arc{"arameo"}
        arn{"mapuche"}
        as{"assamés"}
        asa{"asu"}
        ast{"asturiano"}
        ay{"aimará"}
        az{"acerbaixano"}
        ba{"baskir"}
        be{"bielorruso"}
        bem{"bemba"}
        bez{"bena"}
        bg{"búlgaro"}
        bm{"bambara"}
        bn{"bengalí"}
        bo{"tibetano"}
        br{"bretón"}
        brx{"bodo"}
        bs{"bosnio"}
        ca{"catalán"}
        cgg{"kiga"}
        chr{"cheroqui"}
        ckb{"curdo soraní"}
        co{"corso"}
        cs{"checo"}
        cu{"eslavo eclesiástico"}
        cy{"galés"}
        da{"dinamarqués"}
        dav{"taita"}
        de{"alemán"}
        de_AT{"alemán de austria"}
        de_CH{"alto alemán suízo"}
        dje{"zarma"}
        dsb{"baixo sorabio"}
        dua{"duala"}
        dv{"divehi"}
        dyo{"jola-fonyi"}
        dz{"dzongkha"}
        ebu{"embu"}
        ee{"ewé"}
        efi{"ibibio"}
        egy{"exipcio antigo"}
        el{"grego"}
        en{"inglés"}
        en_AU{"inglés australiano"}
        en_CA{"inglés canadiano"}
        en_GB{"inglés británico"}
        en_US{"inglés dos Estados Unidos"}
        eo{"esperanto"}
        es{"español"}
        es_419{"español latinoamericano"}
        es_ES{"castelán"}
        es_MX{"español de México"}
        et{"estoniano"}
        eu{"éuscaro"}
        fa{"persa"}
        fi{"finés"}
        fil{"filipino"}
        fj{"fixiano"}
        fo{"faroés"}
        fr{"francés"}
        fr_CA{"francés canadiano"}
        fr_CH{"francés suízo"}
        fy{"frisón"}
        ga{"irlandés"}
        gaa{"ga"}
        gag{"gagauz"}
        gd{"gaélico escocés"}
        gl{"galego"}
        gn{"guaraní"}
        grc{"grego antigo"}
        gsw{"alemán suízo"}
        gu{"guxaratiano"}
        guz{"gusii"}
        gv{"manx"}
        ha{"hausa"}
        haw{"hawaiano"}
        he{"hebreo"}
        hi{"hindi"}
        hr{"croata"}
        hsb{"alto sorabio"}
        ht{"haitiano"}
        hu{"húngaro"}
        hy{"armenio"}
        ia{"interlingua"}
        id{"indonesio"}
        ig{"ibo"}
        ii{"yi sichuanés"}
        is{"islandés"}
        it{"italiano"}
        iu{"inuit"}
        ja{"xaponés"}
        jgo{"ngomba"}
        jmc{"machame"}
        jv{"xavanés"}
        ka{"xeorxiano"}
        kab{"kabile"}
        kam{"kamba"}
        kde{"makonde"}
        kea{"caboverdiano"}
        kg{"kongo"}
        khq{"koyra chiini"}
        ki{"kikuyu"}
        kk{"casaco"}
        kl{"groenlandés"}
        kln{"kalenjin"}
        km{"cambodiano"}
        kn{"kannada"}
        ko{"coreano"}
        koi{"komi permio"}
        kok{"konkani"}
        ks{"cachemir"}
        ksb{"shambala"}
        ksf{"bafia"}
        ku{"kurdo"}
        kw{"córnico"}
        ky{"quirguiz"}
        la{"latín"}
        lag{"langi"}
        lb{"luxemburgués"}
        lg{"ganda"}
        lkt{"lakota"}
        ln{"lingala"}
        lo{"laotiano"}
        loz{"lozi"}
        lt{"lituano"}
        lu{"luba-katanga"}
        lua{"luba-lulua"}
        luo{"luo"}
        luy{"luyia"}
        lv{"letón"}
        mas{"masai"}
        mer{"meru"}
        mfe{"crioulo mauritano"}
        mg{"malgaxe"}
        mgh{"makhuwa-meetto"}
        mgo{"meta’"}
        mi{"maorí"}
        mk{"macedonio"}
        ml{"malabar"}
        mn{"mongol"}
        moh{"mohawk"}
        mr{"marathi"}
        ms{"malaio"}
        mt{"maltés"}
        mua{"mundang"}
        mul{"varias linguas"}
        my{"birmano"}
        naq{"nama"}
        nb{"noruegués bokmal"}
        nd{"ndebele do norte"}
        ne{"nepalí"}
        nl{"holandés"}
        nl_BE{"flamenco"}
        nmg{"kwasio"}
        nn{"noruegués nynorsk"}
        no{"noruegués"}
        nqo{"n’ko"}
        nso{"sesotho sa leboa"}
        nus{"nuer"}
        ny{"chewa"}
        nyn{"nyankole"}
        oc{"occitano"}
        om{"oromo"}
        or{"oriya"}
        os{"osetio"}
        pa{"punjabi"}
        pl{"polaco"}
        ps{"paxtún"}
        pt{"portugués"}
        pt_BR{"portugués brasileiro"}
        pt_PT{"portugués europeo"}
        qu{"quechua"}
        quc{"quiché"}
        rm{"romanche"}
        rn{"rundi"}
        ro{"romanés"}
        rof{"rombo"}
        ru{"ruso"}
        rw{"ruandés"}
        rwk{"rwa"}
        sa{"sánscrito"}
        saq{"samburu"}
        sbp{"sangu"}
        sd{"sindhi"}
        se{"sami do norte"}
        seh{"sena"}
        ses{"koyraboro senni"}
        sg{"sango"}
        sh{"serbocroata"}
        shi{"tachelhit"}
        si{"cingalés"}
        sk{"eslovaco"}
        sl{"esloveno"}
        sm{"samoano"}
        sma{"saami do sur"}
        smj{"saami lule"}
        smn{"saami inari"}
        sms{"saami skolt"}
        sn{"shona"}
        so{"somalí"}
        sq{"albanés"}
        sr{"serbio"}
        ss{"swati"}
        st{"sesoto"}
        su{"sondanés"}
        sv{"sueco"}
        sw{"swahili"}
        swc{"suahili congolés"}
        ta{"tamil"}
        te{"telugu"}
        teo{"teso"}
        tet{"tetún"}
        tg{"taxico"}
        th{"tailandés"}
        ti{"tigriña"}
        tk{"turcomano"}
        tl{"tagalo"}
        tlh{"klingon"}
        tn{"tswana"}
        to{"tonganés"}
        tpi{"tok pisin"}
        tr{"turco"}
        ts{"xitsonga"}
        tt{"tártaro"}
        tum{"tumbuka"}
        twq{"tasawaq"}
        ty{"tahitiano"}
        tzm{"tamazight marroquí central"}
        ug{"uigur"}
        uk{"ucraíno"}
        und{"lingua descoñecida ou non válida"}
        ur{"urdú"}
        uz{"uzbeco"}
        vai{"vai"}
        ve{"venda"}
        vi{"vietnamita"}
        vun{"vunjo"}
        wo{"wólof"}
        xh{"xhosa"}
        xog{"soga"}
        yi{"yiddish"}
        yo{"ioruba"}
        zgh{"tamazight de Marrocos estándar"}
        zh{"chinés"}
        zh_Hans{"chinés simplificado"}
        zh_Hant{"chinés tradicional"}
        zu{"zulú"}
        zxx{"sen contido lingüístico"}
    }
    LanguagesShort{
        az{"azerí"}
        en_GB{"inglés R.U."}
        en_US{"inglés EUA"}
    }
    Scripts{
        Arab{"Árabe"}
        Armn{"Armenio"}
        Beng{"Bengalí"}
        Bopo{"Bopomofo"}
        Brai{"Braille"}
        Cans{"Silabario aborixe canadiano unificado"}
        Cyrl{"Cirílico"}
        Deva{"Devanagari"}
        Ethi{"Etíope"}
        Geor{"Xeorxiano"}
        Grek{"Grego"}
        Gujr{"guxaratí"}
        Guru{"Gurmukhi"}
        Hang{"Hangul"}
        Hani{"Han"}
        Hans{"Simplificado"}
        Hant{"Tradicional"}
        Hebr{"Hebreo"}
        Hira{"Hiragana"}
        Jpan{"Xaponés"}
        Kana{"Katakana"}
        Khmr{"Camboxano"}
        Knda{"canarés"}
        Kore{"Coreano"}
        Laoo{"Laosiano"}
        Latn{"Latino"}
        Mlym{"Malabar"}
        Mong{"Mongol"}
        Mymr{"Birmania"}
        Orya{"Oriya"}
        Sinh{"Cingalés"}
        Taml{"Támil"}
        Telu{"Telugú"}
        Thaa{"Thaana"}
        Thai{"Tailandés"}
        Tibt{"Tibetano"}
        Zsym{"Símbolos"}
        Zxxx{"Non escrita"}
        Zyyy{"Común"}
        Zzzz{"Escritura descoñecida"}
    }
    Scripts%stand-alone{
        Hans{"Han simplificado"}
        Hant{"Han tradicional"}
    }
    Scripts%variant{
        Arab{"perso-árabe"}
    }
    Types{
        calendar{
            buddhist{"Calendario budista"}
            chinese{"Calendario chinés"}
            coptic{"Calendario cóptico"}
            dangi{"Calendario dangi"}
            ethiopic{"Calendario etíope"}
            ethiopic-amete-alem{"Calendario Amete Alem etíope"}
            gregorian{"Calendario gregoriano"}
            hebrew{"Calendario hebreo"}
            indian{"Calendario nacional indio"}
            islamic{"Calendario islámico"}
            islamic-civil{"Calendario islámico (civil, tabular)"}
            islamic-rgsa{"Calendario islámico (Arabia Saudita,"}
            iso8601{"Calendario ISO-8601"}
            japanese{"Calendario xaponés"}
            persian{"Calendario persa"}
            roc{"Calendario Minguo"}
        }
        colAlternate{
            non-ignorable{"Clasificar símbolos"}
            shifted{"Clasificar ignorando símbolos"}
        }
        colBackwards{
            no{"Clasificar acentos con normalidade"}
            yes{"Clasificar acentos invertidos"}
        }
        colCaseFirst{
            lower{"Clasificar primeiro as minúsculas"}
            no{"Clasificar orde de maiúsculas e minúsculas normal"}
            upper{"Clasificar primeiro as maiúsculas"}
        }
        colCaseLevel{
            no{"Clasificar sen distinguir entre maiúsculas e minúsculas"}
            yes{"Clasificar distinguindo entre maiúsculas e minúsculas"}
        }
        colHiraganaQuaternary{
            no{"Clasificar Kana por separado"}
            yes{"Clasificar Kana de modo diferente"}
        }
        colNormalization{
            no{"Clasificar sen normalización"}
            yes{"Clasificar Unicode normalizado"}
        }
        colNumeric{
            no{"Clasificar díxitos individualmente"}
            yes{"Clasificar díxitos numericamente"}
        }
        colStrength{
            identical{"Clasificar todo"}
            primary{"Clasificar só letras de base"}
            quaternary{"Clasificar acentos/maiúsculas e minúsculas/ancho/kana"}
            secondary{"Clasificar acentos"}
            tertiary{"Clasificar acentos/maiúsculas e minúsculas/ancho"}
        }
        collation{
            big5han{"Orde de clasificación chinesa tradicional - Big5"}
            dictionary{"Criterio de ordenación do dicionario"}
            ducet{"Criterio de ordenación Unicode predeterminado"}
            gb2312han{"orde de clasifcación chinesa simplificada - GB2312"}
            phonebook{"orde de clasificación da guía telefónica"}
            phonetic{"Orde de clasificación fonética"}
            pinyin{"Orde de clasificación pinyin"}
            reformed{"Criterio de ordenación reformado"}
            search{"Busca de uso xeral"}
            searchjl{"Clasificar por consonante inicial hangul"}
            standard{"Criterio de ordenación estándar"}
            stroke{"Orde de clasificación polo número de trazos"}
            traditional{"Orde de clasificación tradicional"}
            unihan{"Criterio de ordenación radical-trazo"}
        }
        numbers{
            arab{"Díxitos do árabe oriental"}
            arabext{"Díxitos arábicos orientais"}
            armn{"Números armenios"}
            armnlow{"Números armenios en minúscula"}
            beng{"Díxitos bengalís"}
            deva{"Díxitos devanagari"}
            ethi{"Números etíopes"}
            finance{"Números financeiros"}
            fullwide{"Díxitos de ancho completo"}
            geor{"Números xeorxianos"}
            grek{"Números gregos"}
            greklow{"Números gregos en minúscula"}
            gujr{"Díxitos guxarati"}
            guru{"Díxitos do gurmukhi"}
            hanidec{"Números decimais chineses"}
            hans{"Números chineses simplificados"}
            hansfin{"Números financeiros chineses simplificados"}
            hant{"Números do chinés tradicional"}
            hantfin{"Números financeiros do chinés tradicional"}
            hebr{"Números hebreos"}
            jpan{"Números xaponeses"}
            jpanfin{"Números financeiros xaponeses"}
            khmr{"Díxitos do camboxano"}
            knda{"Díxitos do kannadés"}
            laoo{"Díxitos laosianos"}
            latn{"Díxitos occidentais"}
            mlym{"Díxitos malabares"}
            mong{"Díxitos mongoles"}
            mymr{"Díxitos birmanos"}
            native{"Díxitos orixinais"}
            orya{"Díxitos oriya"}
            roman{"Números romanos"}
            romanlow{"Números romanos en minúsculas"}
            taml{"Números támil"}
            tamldec{"Díxitos do támil"}
            telu{"Díxitos do telugú"}
            thai{"Díxitos tailandeses"}
            tibt{"Díxitos tibetanos"}
            traditional{"Numeros tradicionais"}
            vaii{"Díxitos Vai"}
        }
    }
    Version{"2.1.8.9"}
    codePatterns{
        language{"Idioma: {0}"}
        script{"Alfabeto: {0}"}
        territory{"Rexión: {0}"}
    }
    localeDisplayPattern{
        keyTypePattern{"{0}: {1}"}
        pattern{"{0} ({1})"}
        separator{"{0}, {1}"}
    }
}
