﻿// ***************************************************************************
// *
// * Copyright (C) 2011 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/eu.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/eu.xml
 */
eu{
    Keys{
        calendar{"egutegia"}
        collation{"alfabetoa"}
        currency{"moneta"}
    }
    Languages{
        af{"afrikaans"}
        am{"amharikera"}
        ar{"arabiera"}
        as{"assamera"}
        az{"azerbaijanera"}
        be{"bielorrusiera"}
        bg{"bulgariera"}
        bh{"bihariera"}
        bn{"bengalera"}
        bo{"tibetera"}
        br{"bretoiera"}
        bs{"bosniera"}
        ca{"katalana"}
        cs{"txekiera"}
        cy{"galesera"}
        da{"daniera"}
        de{"alemana"}
        de_AT{"alemana (Austria)"}
        el{"greziera"}
        en{"ingelesa"}
        en_AU{"ingelesa (Australia)"}
        en_CA{"ingelesa (Kanada)"}
        en_GB{"ingelesa (Erresuma Batua)"}
        en_US{"ingelesa (AEB)"}
        eo{"esperantoa"}
        es{"gaztelania"}
        et{"estoniera"}
        eu{"euskara"}
        fa{"pertsiera"}
        fi{"finlandiera"}
        fil{"tagalo"}
        fj{"fijiera"}
        fo{"faroera"}
        fr{"frantsesa"}
        fr_CA{"frantsesa (Kanada)"}
        fr_CH{"frantsesa (Suitza)"}
        fy{"frisiera"}
        ga{"gaelikoa"}
        gd{"eskoziako gaelikoa"}
        gl{"galiziera"}
        gn{"guaraniera"}
        gsw{"alemana (Suitza)"}
        gu{"gujaratera"}
        haw{"hawaiiera"}
        he{"hebreera"}
        hi{"hindia"}
        hr{"kroaziera"}
        ht{"haitiera"}
        hu{"hungariera"}
        hy{"armeniera"}
        ia{"interlingua"}
        id{"indonesiera"}
        ie{"interlingue"}
        is{"islandiera"}
        it{"italiera"}
        ja{"japoniera"}
        jv{"javera"}
        ka{"georgiera"}
        kk{"kazakhera"}
        km{"khemerera"}
        kn{"kannada"}
        ko{"koreera"}
        ku{"kurduera"}
        ky{"kirgizera"}
        la{"latina"}
        lb{"luxenburgera"}
        ln{"lingala"}
        lo{"laosera"}
        lt{"lituaniera"}
        lv{"letoniera"}
        mi{"maoriera"}
        mk{"mazedoniera"}
        ml{"malayalamera"}
        mn{"mongoliera"}
        mr{"marathera"}
        ms{"malaysiera"}
        mt{"maltera"}
        mul{"Hizkuntza Anitzak"}
        ne{"nepalera"}
        nl{"nederlandera"}
        nl_BE{"flandriera"}
        nn{"nynorsk norvegiera"}
        no{"norvegiera"}
        oc{"okzitaniera"}
        or{"oriya"}
        os{"osetiera"}
        pa{"punjabera"}
        pl{"poloniera"}
        ps{"paxtuera"}
        pt{"portugesa"}
        pt_BR{"portugesa (Brasil)"}
        pt_PT{"portugesa (Potugal)"}
        ro{"errumaniera"}
        ru{"errusiera"}
        sa{"sanskritoa"}
        sd{"sindhia"}
        se{"Iparraldeko samiera"}
        sh{"serbokroaziera"}
        si{"sinhala"}
        sk{"eslovakiera"}
        sl{"esloveniera"}
        so{"somaliera"}
        sq{"albaniera"}
        sr{"serbiera"}
        st{"hegoaldeko sothoera"}
        su{"sundanera"}
        sv{"suediera"}
        sw{"swahili"}
        swb{"swb"}
        ta{"tamilera"}
        te{"telugua"}
        tg{"tajikistanera"}
        th{"thailandiera"}
        ti{"tigrinya"}
        tk{"turkmeniera"}
        tl{"tagalog"}
        tlh{"klingonera"}
        tr{"turkiera"}
        tw{"twia"}
        ty{"tahitiera"}
        ug{"uigurrera"}
        uk{"ukrainera"}
        ur{"urdu"}
        uz{"uzbekera"}
        vi{"vietnamera"}
        xh{"xhosa"}
        yi{"yiddishera"}
        yue{"yue"}
        zh{"txinera"}
        zh_Hans{"txinera (soildua)"}
        zh_Hant{"txinera (tradizionala)"}
        zu{"zuluera"}
    }
    Types{
        calendar{
            buddhist{"egutegi budista"}
            chinese{"txinatar egutegia"}
            gregorian{"egutegi gregoriarra"}
            hebrew{"hebrear egutegia"}
            indian{"indiar egutegia"}
            islamic{"islamiar egutegia"}
            islamic-civil{"islamiar egutegi zibila"}
            japanese{"japoniar egutegia"}
            roc{"Txinako Errepublikako egutegia"}
        }
        collation{
            big5han{"Txinera tradizionalaren alfabetoa-Big5"}
            direct{"Zuzena"}
            gb2312han{"Txinera sinplifikatuaren alfabetoa -GB2312"}
            phonebook{"Telefonoen zerrenda"}
            traditional{"Tradizionala"}
        }
    }
    Variants{
        POLYTON{"POLITON"}
        REVISED{"BERRIKUSIA"}
        SAAHO{"SAHO"}
        SCOTLAND{"ESKOZIAR INGELESA"}
        VALENCIA{"VALENTZIERA"}
    }
    Version{"2.0.50.95"}
    codePatterns{
        language{"{0}"}
        script{"{0}"}
        territory{"{0}"}
    }
    localeDisplayPattern{
        pattern{"{0} ({1})"}
        separator{", "}
    }
}
