// ***************************************************************************
// *
// *   Copyright (C) 1997-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************

pt_PT {
    Version{ "2.0" }
    // Only contains differences from pt.
    // TODO Verify that the commented out translations are correct for pt and pt_PT.
    Countries {
        AE { "Emiratos \u00C1rabes Unidos" }
        AG { "Ant\u00EDgua e Barbuda" }
        AM { "Arm\u00E9nia" }
        AQ { "Ant\u00E1rctica" }
        AZ { "Azerbeij\u00E3o" }
        BA { "B\u00F3snia-Herzegovina" }
        //BF { "Burkina Faso" }
        //BH { "Bahrain" }
        BJ { "Benim" }
        //BM { "Bermuda" }
        //BW { "Botswana" }
        BY { "Bielorr\u00FAssia" }
        CM { "Camar\u00F5es" }
        CX { "Ilha do Natal" }
        CZ { "Rep\u00FAblica Checa" }
        //DJ { "Djibouti" }
        EE { "Est\u00F3nia" }
        EG { "Egipto" }
        EH { "Sahara Ocidental" }
        ER { "Eritreia" }
        FK { "Ilhas Falkland" }
        //GD { "Grenada" }
        //GH { "Ghana" }
        GL { "Gronel\u00E2ndia" }
        GS { "Ilhas South Georgia e South Sandwich" }
        GW { "Guin\u00E9-Bissau" }
        HK { "Hong Kong - Regi\u00E3o Administrativa Especial da China" }
        KE { "Qu\u00E9nia" }
        KG { "Quirguizist\u00E3o" }
        KH { "Camboja" }
        //KM { "Comoros" }
        KN { "Saint Kitts e Nevis" }
        KP { "Coreia do Norte" }    // alternate name { "Coreia, Rep\u00FAblica Popular Democr\u00E1tica da" }
        KR { "Coreia do Sul" }    // alternate name { "Coreia, Rep\u00FAblica da" }
        KY { "Ilhas Caim\u00E3o" }
        KZ { "Cazaquist\u00E3o" }
        LA { "Lao, Rep\u00FAblica Popular Democr\u00E1tica" }
        //LC { "Saint Lucia" }
        //LS { "Lesotho" }
        LV { "Let\u00F3nia" }
        MC { "M\u00F3naco" }
        MD { "Mold\u00E1via, Rep\u00FAblica da" }
        MG { "Madag\u00E1scar" }
        MK { "Maced\u00F3nia, Rep\u00FAblica da" }
        //MM { "Myanmar" }
        MO { "Macau - Regi\u00E3o Administrativa Especial da China" }
        MP { "Ilhas Mariana do Norte" }
        MU { "Maur\u00EDcias" }
        //MW { "Malawi" }
        NC { "Nova Caled\u00F3nia" }
        PG { "Papua Nova Guin\u00E9" }
        PL { "Pol\u00F3nia" }
        PS { "Territ\u00F3rio Palestiniano" }
        RE { "Reunion" }
        RO { "Rom\u00E9nia" }
        SC { "Seicheles" }
        SG { "Singapura" }
        //SH { "Saint Helena" }
        SI { "Eslov\u00E9nia" }
        SM { "S\u00E3o Marino" }
        TC { "Ilhas Turcas e Caicos" }
        TD { "Tchade" }
        TF { "Territ\u00F3rios Franceses a Sul" }
        TJ { "Tajiquist\u00E3o" }
        TM { "Turquemenist\u00E3o" }
        TW { "Formosa, Prov\u00EDncia Chinesa" }
        UM { "Ilhas Minor Outlying (E.U.A)" }
        UZ { "Uzbaquist\u00E3o" }
        VA { "Santa S\u00E9 (Estado da Cidade do Vaticano)" }
        VC { "Saint Vincent e Grenadines" }
        VG { "Ilhas Virgin Brit\u00E2nicas" }
        VI { "Ilhas Virgin E.U.A." }
        VN { "Vietname" }
        YE { "I\u00E9men" }
        YU { "Jugosl\u00E1via" }
        //ZW { "Zimbabwe" }
    }
    DateTimeElements:intvector { 
        2,
        1,
    }
    DateTimePatterns {
        "HH'H'mm'm'ss's' z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "EEEE, d' de 'MMMM' de 'yyyy",
        "d' de 'MMMM' de 'yyyy",
        "yyyy/MM/dd",
        "yy/MM/dd",
        "{1} {0}",
    }
    Languages {
        ar { "\u00E1rabe" }
        cs { "checo" }
        et { "est\u00F3nio" }
        lv { "let\u00E3o" }
        pl { "polaco" }
        sl { "esloveno" }
    }
    NumberPatterns {
        "#,##0.###;-#,##0.###",
        "#,##0.00 \u00A4;-#,##0.00 \u00A4",
        "#,##0%",
        "#E0",
    }
    // Fallback to pt
//    NumberElements {
//        ",",
//        ".",
//        ";",
//        "%",
//        "0",
//        "#",
//        "-",
//        "E",
//        "\u2030",
//        "\u221E",
//        "\uFFFD",
//        ",",
//        "+",
//    }
}