﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/hr.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/hr.xml
 */
hr{
    Countries{
        001{"Svijet"}
        002{"Afrika"}
        003{"Sjevernoamerički kontinent"}
        005{"Južna Amerika"}
        009{"Oceanija"}
        011{"Zapadna Afrika"}
        013{"Centralna Amerika"}
        014{"Istočna Afrika"}
        015{"Sjeverna Afrika"}
        017{"Središnja Afrika"}
        018{"Južna Afrika"}
        019{"Amerike"}
        021{"Sjeverna Amerika"}
        029{"Karibi"}
        030{"Istočna Azija"}
        034{"Južna Azija"}
        035{"Jugoistočna Azija"}
        039{"Južna Europa"}
        053{"Australazija"}
        054{"Melanezija"}
        057{"Mikronezki oblast"}
        061{"Polinezija"}
        142{"Azija"}
        143{"Srednja Azija"}
        145{"Zapadna Azija"}
        150{"Europa"}
        151{"Istočna Europa"}
        154{"Sjeverna Europa"}
        155{"Zapadna Europa"}
        419{"Latinska Amerika"}
        AC{"Otok Ascension"}
        AD{"Andora"}
        AE{"Ujedinjeni Arapski Emirati"}
        AF{"Afganistan"}
        AG{"Antigua i Barbuda"}
        AI{"Angvila"}
        AL{"Albanija"}
        AM{"Armenija"}
        AN{"Nizozemski Antili"}
        AO{"Angola"}
        AQ{"Antarktika"}
        AR{"Argentina"}
        AS{"Američka Samoa"}
        AT{"Austrija"}
        AU{"Australija"}
        AW{"Aruba"}
        AX{"Otoci Aland"}
        AZ{"Azerbajdžan"}
        BA{"Bosna i Hercegovina"}
        BB{"Barbados"}
        BD{"Bangladeš"}
        BE{"Belgija"}
        BF{"Burkina Faso"}
        BG{"Bugarska"}
        BH{"Bahrein"}
        BI{"Burundi"}
        BJ{"Benin"}
        BL{"Sveti Bartolomej"}
        BM{"Bermuda"}
        BN{"Brunej"}
        BO{"Bolivija"}
        BQ{"Karipski otoci Nizozemske"}
        BR{"Brazil"}
        BS{"Bahami"}
        BT{"Butan"}
        BV{"Otok Bouvet"}
        BW{"Bocvana"}
        BY{"Bjelorusija"}
        BZ{"Belize"}
        CA{"Kanada"}
        CC{"Kokosovi (Keeling) Otoci"}
        CD{"Kongo (DRK)"}
        CF{"Srednjoafrička Republika"}
        CG{"Kongo - Brazzaville"}
        CH{"Švicarska"}
        CI{"Obala Bjelokosti"}
        CK{"Cookovi Otoci"}
        CL{"Čile"}
        CM{"Kamerun"}
        CN{"Kina"}
        CO{"Kolumbija"}
        CP{"Otok Clipperton"}
        CR{"Kostarika"}
        CU{"Kuba"}
        CV{"Zelenortska Republika"}
        CW{"Curaçao"}
        CX{"Božićni Otok"}
        CY{"Cipar"}
        CZ{"Češka Republika"}
        DE{"Njemačka"}
        DG{"Diego Garcia"}
        DJ{"Džibuti"}
        DK{"Danska"}
        DM{"Dominika"}
        DO{"Dominikanska Republika"}
        DZ{"Alžir"}
        EA{"Ceuta i Melilla"}
        EC{"Ekvador"}
        EE{"Estonija"}
        EG{"Egipat"}
        EH{"Zapadna Sahara"}
        ER{"Eritreja"}
        ES{"Španjolska"}
        ET{"Etiopija"}
        EU{"Europska Unija"}
        FI{"Finska"}
        FJ{"Fidži"}
        FK{"Falklandski Otoci"}
        FM{"Mikronezija"}
        FO{"Farski Otoci"}
        FR{"Francuska"}
        GA{"Gabon"}
        GB{"Velika Britanija"}
        GD{"Grenada"}
        GE{"Gruzija"}
        GF{"Francuska Gvajana"}
        GG{"Guernsey"}
        GH{"Gana"}
        GI{"Gibraltar"}
        GL{"Grenland"}
        GM{"Gambija"}
        GN{"Gvineja"}
        GP{"Guadalupa"}
        GQ{"Ekvatorska Gvineja"}
        GR{"Grčka"}
        GS{"Južna Georgija i Južni Sendvički Otoci"}
        GT{"Gvatemala"}
        GU{"Guam"}
        GW{"Gvineja Bisau"}
        GY{"Gvajana"}
        HK{"Hong Kong PUP Kina"}
        HM{"Otoci Heard i McDonald"}
        HN{"Honduras"}
        HR{"Hrvatska"}
        HT{"Haiti"}
        HU{"Mađarska"}
        IC{"Kanarski Otoci"}
        ID{"Indonezija"}
        IE{"Irska"}
        IL{"Izrael"}
        IM{"Otok Man"}
        IN{"Indija"}
        IO{"Britanski Indijskooceanski Teritorij"}
        IQ{"Irak"}
        IR{"Iran"}
        IS{"Island"}
        IT{"Italija"}
        JE{"Jersey"}
        JM{"Jamajka"}
        JO{"Jordan"}
        JP{"Japan"}
        KE{"Kenija"}
        KG{"Kirgistan"}
        KH{"Kambodža"}
        KI{"Kiribati"}
        KM{"Komori"}
        KN{"Sveti Kristofor i Nevis"}
        KP{"Sjeverna Koreja"}
        KR{"Južna Koreja"}
        KW{"Kuvajt"}
        KY{"Kajmanski Otoci"}
        KZ{"Kazahstan"}
        LA{"Laos"}
        LB{"Libanon"}
        LC{"Sveta Lucija"}
        LI{"Lihtenštajn"}
        LK{"Šri Lanka"}
        LR{"Liberija"}
        LS{"Lesoto"}
        LT{"Litva"}
        LU{"Luksemburg"}
        LV{"Latvija"}
        LY{"Libija"}
        MA{"Maroko"}
        MC{"Monako"}
        MD{"Moldavija"}
        ME{"Crna Gora"}
        MF{"Sveti Martin"}
        MG{"Madagaskar"}
        MH{"Maršalovi Otoci"}
        MK{"Makedonija"}
        ML{"Mali"}
        MM{"Mijanmar (Burma)"}
        MN{"Mongolija"}
        MO{"Makao PUP Kina"}
        MP{"Sjeverni Marijanski Otoci"}
        MQ{"Martinique"}
        MR{"Mauritanija"}
        MS{"Montserrat"}
        MT{"Malta"}
        MU{"Mauricijus"}
        MV{"Maldivi"}
        MW{"Malavi"}
        MX{"Meksiko"}
        MY{"Malezija"}
        MZ{"Mozambik"}
        NA{"Namibija"}
        NC{"Nova Kaledonija"}
        NE{"Niger"}
        NF{"Otok Norfolk"}
        NG{"Nigerija"}
        NI{"Nikaragva"}
        NL{"Nizozemska"}
        NO{"Norveška"}
        NP{"Nepal"}
        NR{"Nauru"}
        NU{"Niue"}
        NZ{"Novi Zeland"}
        OM{"Oman"}
        PA{"Panama"}
        PE{"Peru"}
        PF{"Francuska Polinezija"}
        PG{"Papua Nova Gvineja"}
        PH{"Filipini"}
        PK{"Pakistan"}
        PL{"Poljska"}
        PM{"Sveti Petar i Mikelon"}
        PN{"Otoci Pitcairn"}
        PR{"Portoriko"}
        PS{"Palestinsko Područje"}
        PT{"Portugal"}
        PW{"Palau"}
        PY{"Paragvaj"}
        QA{"Katar"}
        QO{"Ostala oceanija"}
        RE{"Reunion"}
        RO{"Rumunjska"}
        RS{"Srbija"}
        RU{"Rusija"}
        RW{"Ruanda"}
        SA{"Saudijska Arabija"}
        SB{"Salomonski Otoci"}
        SC{"Sejšeli"}
        SD{"Sudan"}
        SE{"Švedska"}
        SG{"Singapur"}
        SH{"Sveta Helena"}
        SI{"Slovenija"}
        SJ{"Svalbard i Jan Mayen"}
        SK{"Slovačka"}
        SL{"Sijera Leone"}
        SM{"San Marino"}
        SN{"Senegal"}
        SO{"Somalija"}
        SR{"Surinam"}
        SS{"Južni Sudan"}
        ST{"Sveti Toma i Princip"}
        SV{"Salvador"}
        SX{"Sint Maarten"}
        SY{"Sirija"}
        SZ{"Svazi"}
        TA{"Tristan da Cunha"}
        TC{"Otoci Turks i Caicos"}
        TD{"Čad"}
        TF{"Francuske Južne i Antarktičke Zemlje"}
        TG{"Togo"}
        TH{"Tajland"}
        TJ{"Tadžikistan"}
        TK{"Tokelau"}
        TL{"Istočni Timor"}
        TM{"Turkmenistan"}
        TN{"Tunis"}
        TO{"Tonga"}
        TR{"Turska"}
        TT{"Trinidad i Tobago"}
        TV{"Tuvalu"}
        TW{"Tajvan"}
        TZ{"Tanzanija"}
        UA{"Ukrajina"}
        UG{"Uganda"}
        UM{"Mali udaljeni otoci SAD-a"}
        US{"Sjedinjene Američke Države"}
        UY{"Urugvaj"}
        UZ{"Uzbekistan"}
        VA{"Sveta Stolica"}
        VC{"Sveti Vincent i Grenadini"}
        VE{"Venezuela"}
        VG{"Britanski Djevičanski Otoci"}
        VI{"Američki Djevičanski Otoci"}
        VN{"Vijetnam"}
        VU{"Vanuatu"}
        WF{"Wallis i Futuna"}
        WS{"Samoa"}
        XK{"Kosovo"}
        YE{"Jemen"}
        YT{"Mayotte"}
        ZA{"Južnoafrička Republika"}
        ZM{"Zambija"}
        ZW{"Zimbabve"}
        ZZ{"nepoznato područje"}
    }
    CountriesShort{
        GB{"UK"}
        HK{"Hong Kong"}
        MO{"Makao"}
        PS{"Palestina"}
        US{"SAD"}
    }
    Version{"2.0.98.52"}
}
