/*
 * Locale definitions for Catalan
 *
 * 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_CATALAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\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 "500"
  LOCALE_IDEFAULTLANGUAGE "040a"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0403"
  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 "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "ESP"
  LOCALE_SABBREVDAYNAME1 "dl."
  LOCALE_SABBREVDAYNAME2 "dt."
  LOCALE_SABBREVDAYNAME3 "dc."
  LOCALE_SABBREVDAYNAME4 "dj."
  LOCALE_SABBREVDAYNAME5 "dv."
  LOCALE_SABBREVDAYNAME6 "ds."
  LOCALE_SABBREVDAYNAME7 "dg."
  LOCALE_SABBREVLANGNAME "CAT"
  LOCALE_SABBREVMONTHNAME1 "gen"
  LOCALE_SABBREVMONTHNAME2 "feb"
  LOCALE_SABBREVMONTHNAME3 "març"
  LOCALE_SABBREVMONTHNAME4 "abr"
  LOCALE_SABBREVMONTHNAME5 "maig"
  LOCALE_SABBREVMONTHNAME6 "juny"
  LOCALE_SABBREVMONTHNAME7 "jul"
  LOCALE_SABBREVMONTHNAME8 "ag"
  LOCALE_SABBREVMONTHNAME9 "set"
  LOCALE_SABBREVMONTHNAME10 "oct"
  LOCALE_SABBREVMONTHNAME11 "nov"
  LOCALE_SABBREVMONTHNAME12 "des"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Spain"
  LOCALE_SCURRENCY "€"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "dilluns"
  LOCALE_SDAYNAME2 "dimarts"
  LOCALE_SDAYNAME3 "dimecres"
  LOCALE_SDAYNAME4 "dijous"
  LOCALE_SDAYNAME5 "divendres"
  LOCALE_SDAYNAME6 "dissabte"
  LOCALE_SDAYNAME7 "diumenge"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Spain"
  LOCALE_SENGCURRNAME "Euro"
  LOCALE_SENGLANGUAGE "Catalan"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "EUR"
  LOCALE_SISO3166CTRYNAME "ES"
  LOCALE_SISO639LANGNAME "ca"
  LOCALE_SLANGUAGE "Catalan"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, d' / 'MMMM' / 'yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "gener"
  LOCALE_SMONTHNAME2 "febrer"
  LOCALE_SMONTHNAME3 "març"
  LOCALE_SMONTHNAME4 "abril"
  LOCALE_SMONTHNAME5 "maig"
  LOCALE_SMONTHNAME6 "juny"
  LOCALE_SMONTHNAME7 "juliol"
  LOCALE_SMONTHNAME8 "agost"
  LOCALE_SMONTHNAME9 "setembre"
  LOCALE_SMONTHNAME10 "octubre"
  LOCALE_SMONTHNAME11 "novembre"
  LOCALE_SMONTHNAME12 "desembre"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "ca-ES"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Espanya"
  LOCALE_SNATIVECURRNAME "euro"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "català (Espanya)"
  LOCALE_SNATIVELANGNAME "català"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "CAT "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "dl"
  LOCALE_SSHORTESTDAYNAME2 "dt"
  LOCALE_SSHORTESTDAYNAME3 "dc"
  LOCALE_SSHORTESTDAYNAME4 "dj"
  LOCALE_SSHORTESTDAYNAME5 "dv"
  LOCALE_SSHORTESTDAYNAME6 "ds"
  LOCALE_SSHORTESTDAYNAME7 "dg"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  LOCALE_SYEARMONTH "MMMM' / '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"
}
