/*
 * Locale definitions for Portuguese (Brazil)
 *
 * Copyright 2002 Alexandre Julliard for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#pragma code_page(65001) /* UTF-8 */

STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "55"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "55"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0416"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0416"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "0"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "0"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "BRA"
  LOCALE_SABBREVDAYNAME1 "seg"
  LOCALE_SABBREVDAYNAME2 "ter"
  LOCALE_SABBREVDAYNAME3 "qua"
  LOCALE_SABBREVDAYNAME4 "qui"
  LOCALE_SABBREVDAYNAME5 "sex"
  LOCALE_SABBREVDAYNAME6 "sáb"
  LOCALE_SABBREVDAYNAME7 "dom"
  LOCALE_SABBREVLANGNAME "PTB"
  LOCALE_SABBREVMONTHNAME1 "jan"
  LOCALE_SABBREVMONTHNAME2 "fev"
  LOCALE_SABBREVMONTHNAME3 "mar"
  LOCALE_SABBREVMONTHNAME4 "abr"
  LOCALE_SABBREVMONTHNAME5 "mai"
  LOCALE_SABBREVMONTHNAME6 "jun"
  LOCALE_SABBREVMONTHNAME7 "jul"
  LOCALE_SABBREVMONTHNAME8 "ago"
  LOCALE_SABBREVMONTHNAME9 "set"
  LOCALE_SABBREVMONTHNAME10 "out"
  LOCALE_SABBREVMONTHNAME11 "nov"
  LOCALE_SABBREVMONTHNAME12 "dez"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Brazil"
  LOCALE_SCURRENCY "R$ "
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "segunda-feira"
  LOCALE_SDAYNAME2 "terça-feira"
  LOCALE_SDAYNAME3 "quarta-feira"
  LOCALE_SDAYNAME4 "quinta-feira"
  LOCALE_SDAYNAME5 "sexta-feira"
  LOCALE_SDAYNAME6 "sábado"
  LOCALE_SDAYNAME7 "domingo"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Brazil"
  LOCALE_SENGCURRNAME "Brazilian Real"
  LOCALE_SENGLANGUAGE "Portuguese"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "BRL"
  LOCALE_SISO3166CTRYNAME "BR"
  LOCALE_SISO639LANGNAME "pt"
  LOCALE_SLANGUAGE "Portuguese (Brazil)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, d' de 'MMMM' de 'yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "janeiro"
  LOCALE_SMONTHNAME2 "fevereiro"
  LOCALE_SMONTHNAME3 "março"
  LOCALE_SMONTHNAME4 "abril"
  LOCALE_SMONTHNAME5 "maio"
  LOCALE_SMONTHNAME6 "junho"
  LOCALE_SMONTHNAME7 "julho"
  LOCALE_SMONTHNAME8 "agosto"
  LOCALE_SMONTHNAME9 "setembro"
  LOCALE_SMONTHNAME10 "outubro"
  LOCALE_SMONTHNAME11 "novembro"
  LOCALE_SMONTHNAME12 "dezembro"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "pt-BR"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Brasil"
  LOCALE_SNATIVECURRNAME "Real"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Português (Brasil)"
  LOCALE_SNATIVELANGNAME "Português"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "PTG "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "d/M/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "S"
  LOCALE_SSHORTESTDAYNAME2 "T"
  LOCALE_SSHORTESTDAYNAME3 "Q"
  LOCALE_SSHORTESTDAYNAME4 "Q"
  LOCALE_SSHORTESTDAYNAME5 "S"
  LOCALE_SSHORTESTDAYNAME6 "S"
  LOCALE_SSHORTESTDAYNAME7 "D"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  LOCALE_SYEARMONTH "MMMM' de 'yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Europa Ocidental e Estados Unidos"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Europa Central"
  LGRPID_BALTIC+LGRPID_RES_BASE "Báltico"
  LGRPID_GREEK+LGRPID_RES_BASE "Grego"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cirílico"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turco"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japonês"
  LGRPID_KOREAN+LGRPID_RES_BASE "Coreano"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Chinês Tradicional"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Chinês Simplificado"
  LGRPID_THAI+LGRPID_RES_BASE "Tailandês"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebraico"
  LGRPID_ARABIC+LGRPID_RES_BASE "Árabe"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamita"
  LGRPID_INDIC+LGRPID_RES_BASE "Indiano"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgiano"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armênio"
}
