/*
 * Locale definitions for Spanish (Colombia)
 *
 * 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_COLOMBIA
{
  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 "57"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "57"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20284"
  LOCALE_IDEFAULTLANGUAGE "240a"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "240a"
  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 "COL"
  LOCALE_SABBREVDAYNAME1 "Lun"
  LOCALE_SABBREVDAYNAME2 "Mar"
  LOCALE_SABBREVDAYNAME3 "Mié"
  LOCALE_SABBREVDAYNAME4 "Jue"
  LOCALE_SABBREVDAYNAME5 "Vie"
  LOCALE_SABBREVDAYNAME6 "Sáb"
  LOCALE_SABBREVDAYNAME7 "Dom"
  LOCALE_SABBREVLANGNAME "ESO"
  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 "Colombia"
  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 "Colombia"
  LOCALE_SENGCURRNAME "Colombian Peso"
  LOCALE_SENGLANGUAGE "Spanish"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "COP"
  LOCALE_SISO3166CTRYNAME "CO"
  LOCALE_SISO639LANGNAME "es"
  LOCALE_SLANGUAGE "Spanish (Colombia)"
  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-CO"
  LOCALE_SNATIVECTRYNAME "Colombia"
  LOCALE_SNATIVECURRNAME "Peso"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Español (Colombia)"
  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"
}
