﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/fr.xml
// *
// ***************************************************************************
fr{
    Countries{
        001{"Monde"}
        002{"Afrique"}
        003{"Amérique du Nord"}
        005{"Amérique du Sud"}
        009{"Océanie"}
        011{"Afrique occidentale"}
        013{"Amérique centrale"}
        014{"Afrique orientale"}
        015{"Afrique septentrionale"}
        017{"Afrique centrale"}
        018{"Afrique australe"}
        019{"Amériques"}
        021{"Amérique septentrionale"}
        029{"Caraïbes"}
        030{"Asie orientale"}
        034{"Asie du Sud"}
        035{"Asie du Sud-Est"}
        039{"Europe méridionale"}
        053{"Australasie"}
        054{"Mélanésie"}
        057{"région micronésienne"}
        061{"Polynésie"}
        142{"Asie"}
        143{"Asie centrale"}
        145{"Asie occidentale"}
        150{"Europe"}
        151{"Europe de l’Est"}
        154{"Europe septentrionale"}
        155{"Europe occidentale"}
        419{"Amérique latine"}
        AC{"Île de l’Ascension"}
        AD{"Andorre"}
        AE{"Émirats arabes unis"}
        AF{"Afghanistan"}
        AG{"Antigua-et-Barbuda"}
        AI{"Anguilla"}
        AL{"Albanie"}
        AM{"Arménie"}
        AN{"Antilles néerlandaises"}
        AO{"Angola"}
        AQ{"Antarctique"}
        AR{"Argentine"}
        AS{"Samoa américaines"}
        AT{"Autriche"}
        AU{"Australie"}
        AW{"Aruba"}
        AX{"Îles Åland"}
        AZ{"Azerbaïdjan"}
        BA{"Bosnie-Herzégovine"}
        BB{"Barbade"}
        BD{"Bangladesh"}
        BE{"Belgique"}
        BF{"Burkina Faso"}
        BG{"Bulgarie"}
        BH{"Bahreïn"}
        BI{"Burundi"}
        BJ{"Bénin"}
        BL{"Saint-Barthélemy"}
        BM{"Bermudes"}
        BN{"Brunéi Darussalam"}
        BO{"Bolivie"}
        BQ{"Pays-Bas caribéens"}
        BR{"Brésil"}
        BS{"Bahamas"}
        BT{"Bhoutan"}
        BV{"Île Bouvet"}
        BW{"Botswana"}
        BY{"Biélorussie"}
        BZ{"Belize"}
        CA{"Canada"}
        CC{"Îles Cocos"}
        CD{"Congo-Kinshasa"}
        CF{"République centrafricaine"}
        CG{"Congo-Brazzaville"}
        CH{"Suisse"}
        CI{"Côte d’Ivoire"}
        CK{"Îles Cook"}
        CL{"Chili"}
        CM{"Cameroun"}
        CN{"Chine"}
        CO{"Colombie"}
        CP{"Île Clipperton"}
        CR{"Costa Rica"}
        CU{"Cuba"}
        CV{"Cap-Vert"}
        CW{"Curaçao"}
        CX{"Île Christmas"}
        CY{"Chypre"}
        CZ{"République tchèque"}
        DE{"Allemagne"}
        DG{"Diego Garcia"}
        DJ{"Djibouti"}
        DK{"Danemark"}
        DM{"Dominique"}
        DO{"République dominicaine"}
        DZ{"Algérie"}
        EA{"Ceuta et Melilla"}
        EC{"Équateur"}
        EE{"Estonie"}
        EG{"Égypte"}
        EH{"Sahara occidental"}
        ER{"Érythrée"}
        ES{"Espagne"}
        ET{"Éthiopie"}
        EU{"Union européenne"}
        FI{"Finlande"}
        FJ{"Fidji"}
        FK{"Îles Malouines"}
        FM{"États fédérés de Micronésie"}
        FO{"Îles Féroé"}
        FR{"France"}
        GA{"Gabon"}
        GB{"Royaume-Uni"}
        GD{"Grenade"}
        GE{"Géorgie"}
        GF{"Guyane française"}
        GG{"Guernesey"}
        GH{"Ghana"}
        GI{"Gibraltar"}
        GL{"Groenland"}
        GM{"Gambie"}
        GN{"Guinée"}
        GP{"Guadeloupe"}
        GQ{"Guinée équatoriale"}
        GR{"Grèce"}
        GS{"Géorgie du Sud et îles Sandwich du Sud"}
        GT{"Guatemala"}
        GU{"Guam"}
        GW{"Guinée-Bissau"}
        GY{"Guyana"}
        HK{"R.A.S. chinoise de Hong Kong"}
        HM{"Îles Heard et McDonald"}
        HN{"Honduras"}
        HR{"Croatie"}
        HT{"Haïti"}
        HU{"Hongrie"}
        IC{"Îles Canaries"}
        ID{"Indonésie"}
        IE{"Irlande"}
        IL{"Israël"}
        IM{"Île de Man"}
        IN{"Inde"}
        IO{"Territoire britannique de l’océan Indien"}
        IQ{"Irak"}
        IR{"Iran"}
        IS{"Islande"}
        IT{"Italie"}
        JE{"Jersey"}
        JM{"Jamaïque"}
        JO{"Jordanie"}
        JP{"Japon"}
        KE{"Kenya"}
        KG{"Kirghizistan"}
        KH{"Cambodge"}
        KI{"Kiribati"}
        KM{"Comores"}
        KN{"Saint-Christophe-et-Niévès"}
        KP{"Corée du Nord"}
        KR{"Corée du Sud"}
        KW{"Koweït"}
        KY{"Îles Caïmans"}
        KZ{"Kazakhstan"}
        LA{"Laos"}
        LB{"Liban"}
        LC{"Sainte-Lucie"}
        LI{"Liechtenstein"}
        LK{"Sri Lanka"}
        LR{"Libéria"}
        LS{"Lesotho"}
        LT{"Lituanie"}
        LU{"Luxembourg"}
        LV{"Lettonie"}
        LY{"Libye"}
        MA{"Maroc"}
        MC{"Monaco"}
        MD{"Moldavie"}
        ME{"Monténégro"}
        MF{"Saint-Martin"}
        MG{"Madagascar"}
        MH{"Îles Marshall"}
        MK{"Macédoine"}
        ML{"Mali"}
        MM{"Myanmar (Birmanie)"}
        MN{"Mongolie"}
        MO{"R.A.S. chinoise de Macao"}
        MP{"Îles Mariannes du Nord"}
        MQ{"Martinique"}
        MR{"Mauritanie"}
        MS{"Montserrat"}
        MT{"Malte"}
        MU{"Maurice"}
        MV{"Maldives"}
        MW{"Malawi"}
        MX{"Mexique"}
        MY{"Malaisie"}
        MZ{"Mozambique"}
        NA{"Namibie"}
        NC{"Nouvelle-Calédonie"}
        NE{"Niger"}
        NF{"Île Norfolk"}
        NG{"Nigéria"}
        NI{"Nicaragua"}
        NL{"Pays-Bas"}
        NO{"Norvège"}
        NP{"Népal"}
        NR{"Nauru"}
        NU{"Niue"}
        NZ{"Nouvelle-Zélande"}
        OM{"Oman"}
        PA{"Panama"}
        PE{"Pérou"}
        PF{"Polynésie française"}
        PG{"Papouasie-Nouvelle-Guinée"}
        PH{"Philippines"}
        PK{"Pakistan"}
        PL{"Pologne"}
        PM{"Saint-Pierre-et-Miquelon"}
        PN{"Îles Pitcairn"}
        PR{"Porto Rico"}
        PS{"Territoires palestiniens"}
        PT{"Portugal"}
        PW{"Palaos"}
        PY{"Paraguay"}
        QA{"Qatar"}
        QO{"régions éloignées de l’Océanie"}
        RE{"La Réunion"}
        RO{"Roumanie"}
        RS{"Serbie"}
        RU{"Russie"}
        RW{"Rwanda"}
        SA{"Arabie saoudite"}
        SB{"Îles Salomon"}
        SC{"Seychelles"}
        SD{"Soudan"}
        SE{"Suède"}
        SG{"Singapour"}
        SH{"Sainte-Hélène"}
        SI{"Slovénie"}
        SJ{"Svalbard et Jan Mayen"}
        SK{"Slovaquie"}
        SL{"Sierra Leone"}
        SM{"Saint-Marin"}
        SN{"Sénégal"}
        SO{"Somalie"}
        SR{"Suriname"}
        SS{"Soudan du Sud"}
        ST{"Sao Tomé-et-Principe"}
        SV{"El Salvador"}
        SX{"Saint-Martin (partie néerlandaise)"}
        SY{"Syrie"}
        SZ{"Swaziland"}
        TA{"Tristan da Cunha"}
        TC{"Îles Turques-et-Caïques"}
        TD{"Tchad"}
        TF{"Terres australes françaises"}
        TG{"Togo"}
        TH{"Thaïlande"}
        TJ{"Tadjikistan"}
        TK{"Tokélaou"}
        TL{"Timor oriental"}
        TM{"Turkménistan"}
        TN{"Tunisie"}
        TO{"Tonga"}
        TR{"Turquie"}
        TT{"Trinité-et-Tobago"}
        TV{"Tuvalu"}
        TW{"Taïwan"}
        TZ{"Tanzanie"}
        UA{"Ukraine"}
        UG{"Ouganda"}
        UM{"Îles mineures éloignées des États-Unis"}
        US{"États-Unis"}
        UY{"Uruguay"}
        UZ{"Ouzbékistan"}
        VA{"État de la Cité du Vatican"}
        VC{"Saint-Vincent-et-les-Grenadines"}
        VE{"Venezuela"}
        VG{"Îles Vierges britanniques"}
        VI{"Îles Vierges des États-Unis"}
        VN{"Vietnam"}
        VU{"Vanuatu"}
        WF{"Wallis-et-Futuna"}
        WS{"Samoa"}
        XK{"Kosovo"}
        YE{"Yémen"}
        YT{"Mayotte"}
        ZA{"Afrique du Sud"}
        ZM{"Zambie"}
        ZW{"Zimbabwe"}
        ZZ{"région indéterminée"}
    }
    Countries%short{
        GB{"R.-U."}
        HK{"Hong Kong"}
        MO{"Macao"}
        PS{"Palestine"}
        US{"É.-U."}
    }
    Countries%variant{
        CD{"Congo (RDC)"}
        CG{"République du Congo"}
        FK{"Îles Falkland"}
        MK{"Macédoine (ARYM)"}
        TL{"Timor-Oriental"}
    }
    Version{"2.1.20.4"}
}
