﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/se.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/se.xml
 */
se{
    Keys{
        calendar{"kaleandar"}
        collation{"ortnet"}
        currency{"valuhtta"}
        numbers{"numerála"}
    }
    Languages{
        ace{"acehgiella"}
        af{"afrikánsagiella"}
        an{"aragoniagiella"}
        ang{"boares eaŋgalasgiella"}
        ar{"arábagiella"}
        ast{"asturiagiella"}
        be{"vilges-ruoššagiella"}
        bg{"bulgáriagiella"}
        bn{"bengalgiella"}
        bo{"tibetagiella"}
        br{"bretonagiella"}
        bs{"bosniagiella"}
        ca{"katalánagiella"}
        chm{"marigiella"}
        co{"corsicagiella"}
        cs{"čeahkagiella"}
        cy{"kymragiella"}
        da{"dánskkagiella"}
        de{"duiskkagiella"}
        dv{"divehigiella"}
        dz{"dzongkhagiella"}
        el{"greikkagiella"}
        en{"eaŋgalsgiella"}
        es{"spánskkagiella"}
        et{"esttegiella"}
        fa{"persijagiella"}
        fi{"suomagiella"}
        fil{"filippiinnagiella"}
        fj{"fidjigiella"}
        fo{"fearagiella"}
        fr{"fránskkagiella"}
        fy{"oarjifriisagiella"}
        ga{"iirragiella"}
        gu{"gujaratagiella"}
        gv{"manksgiella"}
        ha{"haussagiella"}
        haw{"hawaiigiella"}
        hi{"hindigiella"}
        hr{"kroátiagiella"}
        ht{"haitigiella"}
        hu{"ungárgiella"}
        hy{"armeenagiella"}
        id{"indonesiagiella"}
        is{"islánddagiella"}
        it{"itáliagiella"}
        ja{"japánagiella"}
        jv{"javagiella"}
        ka{"georgiagiella"}
        kk{"kazakgiella"}
        km{"kambodiagiella"}
        ko{"koreagiella"}
        krl{"gárjilgiella"}
        ku{"kurdigiella"}
        kv{"komigiella"}
        kw{"kornagiella"}
        la{"láhtengiella"}
        lb{"luxemburggagiella"}
        lo{"laogiella"}
        lt{"liettuvagiella"}
        lv{"látviagiella"}
        mdf{"mokšagiella"}
        mi{"maorigiella"}
        mk{"makedoniagiella"}
        mn{"mongoliagiella"}
        mt{"maltagiella"}
        my{"burmagiella"}
        myv{"ersagiella"}
        nb{"girjedárogiella"}
        ne{"nepaligiella"}
        nl{"hollánddagiella"}
        nn{"ođđadárogiella"}
        no{"dárogiella"}
        oc{"oksitánagiella"}
        pa{"panjabigiella"}
        pl{"polskkagiella"}
        pt{"portugálagiella"}
        rm{"romanšgiella"}
        ro{"romániagiella"}
        ru{"ruoššagiella"}
        sc{"sardigiella"}
        scn{"sisiliagiella"}
        se{"davvisámegiella"}
        sel{"selkupagiella"}
        sh{"serbokroatiagiella"}
        sk{"slovákiagiella"}
        sl{"slovenagiella"}
        sm{"samoagiella"}
        sma{"lullisámegiella"}
        smj{"julevsámegiella"}
        smn{"anárašgiella"}
        sms{"nuortalašgiella"}
        sq{"albánagiella"}
        sr{"serbiagiella"}
        sv{"ruoŧagiella"}
        swb{"shimaorigiella"}
        th{"ŧaigiella"}
        tr{"durkagiella"}
        ty{"tahitigiella"}
        udm{"udmurtagiella"}
        uk{"ukrainagiella"}
        und{"dovdameahttun giella"}
        ur{"urdugiella"}
        vi{"vietnamgiella"}
        wa{"vallonagiella"}
        yue{"kantongiella"}
        zh{"kiinnágiella"}
        zh_Hans{"álki kiinágiella"}
        zh_Hant{"árbevirolaš kiinnágiella"}
    }
    Scripts{
        Arab{"arába"}
        Cyrl{"kyrillalaš"}
        Grek{"greikkalaš"}
        Hang{"hangul"}
        Hani{"kiinnaš"}
        Hans{"álki"}
        Hant{"árbevirolaš"}
        Hira{"hiragana"}
        Kana{"katakana"}
        Latn{"láhtenaš"}
        Zxxx{"orrut chállojuvvot"}
        Zzzz{"dovdameahttun chállin"}
    }
    Types{
        calendar{
            buddhist{"buddhista kaleander"}
            chinese{"kiinna"}
            gregorian{"gregoria kaleander"}
        }
        collation{
            pinyin{"pinyin ortnet"}
            traditional{"árbevirolaš ortnet"}
        }
        numbers{
            fullwide{"viddis oarjelohkosátni"}
            latn{"oarjelohkosátni"}
        }
    }
    Variants{
        FONIPA{"IPA"}
        FONUPA{"UPA"}
        FONXSAMP{"X-SAMPA"}
        HEPBURN{"Hepburn"}
        PINYIN{"pinyin"}
        WADEGILE{"Wade-Giles"}
    }
    Version{"2.1.7.53"}
    codePatterns{
        language{"giella: {0}"}
        script{"chállin: {0}"}
        territory{"guovlu: {0}"}
    }
}
