/*
 * Locale definitions for Spanish (International Sort)
 *
 * 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_MODERN
{
  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 "34"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "34"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20284"
  LOCALE_IDEFAULTLANGUAGE "0c0a"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0c0a"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "ESP"
  LOCALE_SABBREVDAYNAME1 "lun"
  LOCALE_SABBREVDAYNAME2 "mar"
  LOCALE_SABBREVDAYNAME3 "mié"
  LOCALE_SABBREVDAYNAME4 "jue"
  LOCALE_SABBREVDAYNAME5 "vie"
  LOCALE_SABBREVDAYNAME6 "sáb"
  LOCALE_SABBREVDAYNAME7 "dom"
  LOCALE_SABBREVLANGNAME "ESN"
  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 "Spain"
  LOCALE_SCURRENCY "€"
  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 "Spain"
  LOCALE_SENGCURRNAME "Euro"
  LOCALE_SENGLANGUAGE "Spanish"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "EUR"
  LOCALE_SISO3166CTRYNAME "ES"
  LOCALE_SISO639LANGNAME "es"
  LOCALE_SLANGUAGE "Spanish (International Sort)"
  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-ES"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "España"
  LOCALE_SNATIVECURRNAME "euro"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "español (España)"
  LOCALE_SNATIVELANGNAME "español"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ESP "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "L"
  LOCALE_SSHORTESTDAYNAME2 "M"
  LOCALE_SSHORTESTDAYNAME3 "X"
  LOCALE_SSHORTESTDAYNAME4 "J"
  LOCALE_SSHORTESTDAYNAME5 "V"
  LOCALE_SSHORTESTDAYNAME6 "S"
  LOCALE_SSHORTESTDAYNAME7 "D"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "International"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  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"
}
