/*
 * Locale definitions for Spanish (Uruguay)
 *
 * 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_URUGUAY
{
  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 "598"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "598"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20284"
  LOCALE_IDEFAULTLANGUAGE "380a"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "380a"
  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 "9"
  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 "URY"
  LOCALE_SABBREVDAYNAME1 "Lun"
  LOCALE_SABBREVDAYNAME2 "Mar"
  LOCALE_SABBREVDAYNAME3 "Mié"
  LOCALE_SABBREVDAYNAME4 "Jue"
  LOCALE_SABBREVDAYNAME5 "Vie"
  LOCALE_SABBREVDAYNAME6 "Sáb"
  LOCALE_SABBREVDAYNAME7 "Dom"
  LOCALE_SABBREVLANGNAME "ESY"
  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 "Uruguay"
  LOCALE_SCURRENCY "$U"
  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 "Uruguay"
  LOCALE_SENGCURRNAME "Peso Uruguayo"
  LOCALE_SENGLANGUAGE "Spanish"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "UYU"
  LOCALE_SISO3166CTRYNAME "UY"
  LOCALE_SISO639LANGNAME "es"
  LOCALE_SLANGUAGE "Spanish (Uruguay)"
  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-UY"
  LOCALE_SNATIVECTRYNAME "Uruguay"
  LOCALE_SNATIVECURRNAME "Peso"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Español (Uruguay)"
  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"
}
