// ****************************************************************************
// *                                                                          *
// * COPYRIGHT:                                                               *
// * (C) Copyright Taligent, Inc.,  1997                                      *
// * (C) Copyright International Business Machines Corporation,  1997-99      *
// * Licensed Material - Program-Property of IBM - All Rights Reserved.       *
// * US Government Users Restricted Rights - Use, duplication, or disclosure  *
// * restricted by GSA ADP Schedule Contract with IBM Corp.                   *
// *                                                                          *
// ****************************************************************************

pt {
    Countries { 
        PT { "Portugal" }
        BR { "Brasil" }
    }
    DateTimeElements { 
            "2",
            "1",
    }
    DateTimePatterns { 
            "HH'H'mm'm' z",
            "H:mm:ss z",
            "H:mm:ss",
            "H:mm",
            "EEEE, d' de 'MMMM' de 'yyyy",
            "d' de 'MMMM' de 'yyyy",
            "d/MMM/yy",
            "dd-MM-yyyy",
            "{1} {0}",
    }
    DayAbbreviations { 
            "Dom",
            "Seg",
            "Ter",
            "Qua",
            "Qui",
            "Sex",
            "S\u00E1b",
    }
    DayNames { 
            "Domingo",
            "Segunda-feira",
            "Ter\u00E7a-feira",
            "Quarta-feira",
            "Quinta-feira",
            "Sexta-feira",
            "S\u00E1bado",
    }
    Languages { 
        pt { "portugu\u00EAs" }
    }
    LocaleID { "0816" }
    LocaleString { "pt" }
    MonthAbbreviations { 
            "Jan",
            "Fev",
            "Mar",
            "Abr",
            "Mai",
            "Jun",
            "Jul",
            "Ago",
            "Set",
            "Out",
            "Nov",
            "Dez",
            "",
    }
    MonthNames { 
            "Janeiro",
            "Fevereiro",
            "Mar\u00E7o",
            "Abril",
            "Maio",
            "Junho",
            "Julho",
            "Agosto",
            "Setembro",
            "Outubro",
            "Novembro",
            "Dezembro",
            "",
    }
    NumberElements { 
            ",",
            ".",
            ";",
            "%",
            "0",
            "#",
            "-",
            "E",
            "\u2030",
            "\u221E",
            "\uFFFD",
    }
    ShortLanguage { "por" }
    localPatternChars { "GyMdkHmsSEDFwWahKz" }
    zoneStrings { 
        {
                "Africa/Casablanca",
                "GMT",
                "GMT",
                "GMT",
                "GMT",
        }
    }
}
