﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/rn.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/rn.xml
 */
rn{
    Countries{
        AD{"Andora"}
        AE{"Leta Zunze Ubumwe z’Abarabu"}
        AF{"Afuganisitani"}
        AG{"Antigwa na Baribuda"}
        AI{"Angwila"}
        AL{"Alubaniya"}
        AM{"Arumeniya"}
        AN{"Antiye y’Abaholandi"}
        AO{"Angola"}
        AR{"Arijantine"}
        AS{"Samowa nyamerika"}
        AT{"Otirishe"}
        AU{"Ositaraliya"}
        AW{"Aruba"}
        AZ{"Azerubayijani"}
        BA{"Bosiniya na Herigozevine"}
        BB{"Barubadosi"}
        BD{"Bangaladeshi"}
        BE{"Ububiligi"}
        BF{"Burukina Faso"}
        BG{"Buligariya"}
        BH{"Bahareyini"}
        BI{"Uburundi"}
        BJ{"Bene"}
        BM{"Berimuda"}
        BN{"Buruneyi"}
        BO{"Boliviya"}
        BR{"Burezili"}
        BS{"Bahamasi"}
        BT{"Butani"}
        BW{"Botswana"}
        BY{"Belausi"}
        BZ{"Belize"}
        CA{"Kanada"}
        CD{"Repubulika Iharanira Demokarasi ya Kongo"}
        CF{"Repubulika ya Santarafurika"}
        CG{"Kongo"}
        CH{"Ubusuwisi"}
        CI{"Kotedivuware"}
        CK{"Izinga rya Kuku"}
        CL{"Shili"}
        CM{"Kameruni"}
        CN{"Ubushinwa"}
        CO{"Kolombiya"}
        CR{"Kositarika"}
        CU{"Kiba"}
        CV{"Ibirwa bya Kapuveri"}
        CY{"Izinga rya Shipure"}
        CZ{"Repubulika ya Ceke"}
        DE{"Ubudage"}
        DJ{"Jibuti"}
        DK{"Danimariki"}
        DM{"Dominika"}
        DO{"Repubulika ya Dominika"}
        DZ{"Alijeriya"}
        EC{"Ekwateri"}
        EE{"Esitoniya"}
        EG{"Misiri"}
        ER{"Elitereya"}
        ES{"Hisipaniya"}
        ET{"Etiyopiya"}
        FI{"Finilandi"}
        FJ{"Fiji"}
        FK{"Izinga rya Filikilandi"}
        FM{"Mikoroniziya"}
        FR{"Ubufaransa"}
        GA{"Gabo"}
        GB{"Ubwongereza"}
        GD{"Gerenada"}
        GE{"Jeworujiya"}
        GF{"Gwayana y’Abafaransa"}
        GH{"Gana"}
        GI{"Juburalitari"}
        GL{"Gurunilandi"}
        GM{"Gambiya"}
        GN{"Guneya"}
        GP{"Gwadelupe"}
        GQ{"Gineya Ekwatoriyali"}
        GR{"Ubugereki"}
        GT{"Gwatemala"}
        GU{"Gwamu"}
        GW{"Gineya Bisawu"}
        GY{"Guyane"}
        HN{"Hondurasi"}
        HR{"Korowasiya"}
        HT{"Hayiti"}
        HU{"Hungariya"}
        ID{"Indoneziya"}
        IE{"Irilandi"}
        IL{"Isiraheli"}
        IN{"Ubuhindi"}
        IO{"Intara y’Ubwongereza yo mu birwa by’Abahindi"}
        IQ{"Iraki"}
        IR{"Irani"}
        IS{"Ayisilandi"}
        IT{"Ubutaliyani"}
        JM{"Jamayika"}
        JO{"Yorudaniya"}
        JP{"Ubuyapani"}
        KE{"Kenya"}
        KG{"Kirigisitani"}
        KH{"Kamboje"}
        KI{"Kiribati"}
        KM{"Izinga rya Komore"}
        KN{"Sekitsi na Nevisi"}
        KP{"Koreya y’amajaruguru"}
        KR{"Koreya y’amajepfo"}
        KW{"Koweti"}
        KY{"Ibirwa bya Keyimani"}
        KZ{"Kazakisitani"}
        LA{"Layosi"}
        LB{"Libani"}
        LC{"Selusiya"}
        LI{"Lishyitenshitayini"}
        LK{"Sirilanka"}
        LR{"Liberiya"}
        LS{"Lesoto"}
        LT{"Lituwaniya"}
        LU{"Lukusamburu"}
        LV{"Lativa"}
        LY{"Libiya"}
        MA{"Maroke"}
        MC{"Monako"}
        MD{"Moludavi"}
        MG{"Madagasikari"}
        MH{"Izinga rya Marishari"}
        MK{"Masedoniya"}
        ML{"Mali"}
        MM{"Birimaniya"}
        MN{"Mongoliya"}
        MP{"Amazinga ya Mariyana ryo mu majaruguru"}
        MQ{"Maritiniki"}
        MR{"Moritaniya"}
        MS{"Monteserati"}
        MT{"Malita"}
        MU{"Izinga rya Morise"}
        MV{"Moludave"}
        MW{"Malawi"}
        MX{"Migizike"}
        MY{"Maleziya"}
        MZ{"Mozambiki"}
        NA{"Namibiya"}
        NC{"Niyukaledoniya"}
        NE{"Nijeri"}
        NF{"izinga rya Norufoluke"}
        NG{"Nijeriya"}
        NI{"Nikaragwa"}
        NL{"Ubuholandi"}
        NO{"Noruveji"}
        NP{"Nepali"}
        NR{"Nawuru"}
        NU{"Niyuwe"}
        NZ{"Nuvelizelandi"}
        OM{"Omani"}
        PA{"Panama"}
        PE{"Peru"}
        PF{"Polineziya y’Abafaransa"}
        PG{"Papuwa Niyugineya"}
        PH{"Amazinga ya Filipine"}
        PK{"Pakisitani"}
        PL{"Polonye"}
        PM{"Sempiyeri na Mikeloni"}
        PN{"Pitikeyirini"}
        PR{"Puwetoriko"}
        PS{"Palesitina Wesitibanka na Gaza"}
        PT{"Porutugali"}
        PW{"Palawu"}
        PY{"Paragwe"}
        QA{"Katari"}
        RE{"Amazinga ya Reyiniyo"}
        RO{"Rumaniya"}
        RU{"Uburusiya"}
        RW{"u Rwanda"}
        SA{"Arabiya Sawudite"}
        SB{"Amazinga ya Salumoni"}
        SC{"Amazinga ya Seyisheli"}
        SD{"Sudani"}
        SE{"Suwedi"}
        SG{"Singapuru"}
        SH{"Sehelene"}
        SI{"Siloveniya"}
        SK{"Silovakiya"}
        SL{"Siyeralewone"}
        SM{"Sanimarino"}
        SN{"Senegali"}
        SO{"Somaliya"}
        SR{"Suriname"}
        ST{"Sawotome na Perensipe"}
        SV{"Eli Saluvatori"}
        SY{"Siriya"}
        SZ{"Suwazilandi"}
        TC{"Amazinga ya Turkisi na Cayikosi"}
        TD{"Cadi"}
        TG{"Togo"}
        TH{"Tayilandi"}
        TJ{"Tajikisitani"}
        TK{"Tokelawu"}
        TL{"Timoru y’iburasirazuba"}
        TM{"Turukumenisitani"}
        TN{"Tuniziya"}
        TO{"Tonga"}
        TR{"Turukiya"}
        TT{"Tirinidadi na Tobago"}
        TV{"Tuvalu"}
        TW{"Tayiwani"}
        TZ{"Tanzaniya"}
        UA{"Ikerene"}
        UG{"Ubugande"}
        US{"Leta Zunze Ubumwe za Amerika"}
        UY{"Irigwe"}
        UZ{"Uzubekisitani"}
        VA{"Umurwa wa Vatikani"}
        VC{"Sevensa na Gerenadine"}
        VE{"Venezuwela"}
        VG{"Ibirwa by’isugi by’Abongereza"}
        VI{"Amazinga y’Isugi y’Abanyamerika"}
        VN{"Viyetinamu"}
        VU{"Vanuwatu"}
        WF{"Walisi na Futuna"}
        WS{"Samowa"}
        YE{"Yemeni"}
        YT{"Mayote"}
        ZA{"Afurika y’Epfo"}
        ZM{"Zambiya"}
        ZW{"Zimbabwe"}
    }
    Version{"2.1.7.39"}
}
