/*
 * Locale definitions for Spanish (Paraguay)
 *
 * 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_SPANISH, SUBLANG_SPANISH_PARAGUAY
{
  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 "595"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "595"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20284"
  LOCALE_IDEFAULTLANGUAGE "3c0a"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "3c0a"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "14"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "0"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "1"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "a.m."
  LOCALE_S2359 "p.m."
  LOCALE_SABBREVCTRYNAME "PRY"
  LOCALE_SABBREVDAYNAME1 "Lun"
  LOCALE_SABBREVDAYNAME2 "Mar"
  LOCALE_SABBREVDAYNAME3 "Mié"
  LOCALE_SABBREVDAYNAME4 "Jue"
  LOCALE_SABBREVDAYNAME5 "Vie"
  LOCALE_SABBREVDAYNAME6 "Sáb"
  LOCALE_SABBREVDAYNAME7 "Dom"
  LOCALE_SABBREVLANGNAME "ESZ"
  LOCALE_SABBREVMONTHNAME1 "Ene"
  LOCALE_SABBREVMONTHNAME2 "Feb"
  LOCALE_SABBREVMONTHNAME3 "Mar"
  LOCALE_SABBREVMONTHNAME4 "Abr"
  LOCALE_SABBREVMONTHNAME5 "May"
  LOCALE_SABBREVMONTHNAME6 "Jun"
  LOCALE_SABBREVMONTHNAME7 "Jul"
  LOCALE_SABBREVMONTHNAME8 "Ago"
  LOCALE_SABBREVMONTHNAME9 "Sep"
  LOCALE_SABBREVMONTHNAME10 "Oct"
  LOCALE_SABBREVMONTHNAME11 "Nov"
  LOCALE_SABBREVMONTHNAME12 "Dic"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Paraguay"
  LOCALE_SCURRENCY "Gs"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "Lunes"
  LOCALE_SDAYNAME2 "Martes"
  LOCALE_SDAYNAME3 "Miércoles"
  LOCALE_SDAYNAME4 "Jueves"
  LOCALE_SDAYNAME5 "Viernes"
  LOCALE_SDAYNAME6 "Sábado"
  LOCALE_SDAYNAME7 "Domingo"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Paraguay"
  LOCALE_SENGCURRNAME "Paraguay Guarani"
  LOCALE_SENGLANGUAGE "Spanish"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "PYG"
  LOCALE_SISO3166CTRYNAME "PY"
  LOCALE_SISO639LANGNAME "es"
  LOCALE_SLANGUAGE "Spanish (Paraguay)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dddd, dd' de 'MMMM' de 'yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Enero"
  LOCALE_SMONTHNAME2 "Febrero"
  LOCALE_SMONTHNAME3 "Marzo"
  LOCALE_SMONTHNAME4 "Abril"
  LOCALE_SMONTHNAME5 "Mayo"
  LOCALE_SMONTHNAME6 "Junio"
  LOCALE_SMONTHNAME7 "Julio"
  LOCALE_SMONTHNAME8 "Agosto"
  LOCALE_SMONTHNAME9 "Septiembre"
  LOCALE_SMONTHNAME10 "Octubre"
  LOCALE_SMONTHNAME11 "Noviembre"
  LOCALE_SMONTHNAME12 "Diciembre"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "es-PY"
  LOCALE_SNATIVECTRYNAME "Paraguay"
  LOCALE_SNATIVECURRNAME "Guaraní"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Español (Paraguay)"
  LOCALE_SNATIVELANGNAME "Español"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ESP "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "lu"
  LOCALE_SSHORTESTDAYNAME2 "ma"
  LOCALE_SSHORTESTDAYNAME3 "mi"
  LOCALE_SSHORTESTDAYNAME4 "ju"
  LOCALE_SSHORTESTDAYNAME5 "vi"
  LOCALE_SSHORTESTDAYNAME6 "sá"
  LOCALE_SSHORTESTDAYNAME7 "do"
  LOCALE_SSHORTTIME "hh:mm tt"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "hh:mm:ss tt"
  LOCALE_SYEARMONTH "MMMM' de 'yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE "Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE "Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE "Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabic"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE "Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armenian"
}
