// ***************************************************************************
// *
// *   Copyright (C) 1997-2004, 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" }
    }
    Currencies{
        PTE { 
            "Esc.", 
            "Escudo portugu\u00eas",      
            :array{
                "#,##0.00 \u00A4;-#,##0.00 \u00A4", /*currency pattern*/   
                "$",  /* decimal sperator*/ 
                ",",  /* grouping separator*/
            }
        }
    }
    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",
//        ",",
//        "+",
//    }
    calendar{
        gregorian{
            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}",
            }
        }
    }
}
