/*
 * Locale definitions for Galician
 *
 * 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_GALICIAN, 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 "0"
  LOCALE_ICOUNTRY "34"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  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 "0456"
  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 "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "a.m."
  LOCALE_S2359 "p.m."
  LOCALE_SABBREVCTRYNAME "ESP"
  LOCALE_SABBREVDAYNAME1 "luns"
  LOCALE_SABBREVDAYNAME2 "mar"
  LOCALE_SABBREVDAYNAME3 "mér"
  LOCALE_SABBREVDAYNAME4 "xov"
  LOCALE_SABBREVDAYNAME5 "ven"
  LOCALE_SABBREVDAYNAME6 "sab"
  LOCALE_SABBREVDAYNAME7 "dom"
  LOCALE_SABBREVLANGNAME "GLC"
  LOCALE_SABBREVMONTHNAME1 "xan"
  LOCALE_SABBREVMONTHNAME2 "feb"
  LOCALE_SABBREVMONTHNAME3 "mar"
  LOCALE_SABBREVMONTHNAME4 "abr"
  LOCALE_SABBREVMONTHNAME5 "maio"
  LOCALE_SABBREVMONTHNAME6 "xuñ"
  LOCALE_SABBREVMONTHNAME7 "xull"
  LOCALE_SABBREVMONTHNAME8 "ago"
  LOCALE_SABBREVMONTHNAME9 "set"
  LOCALE_SABBREVMONTHNAME10 "out"
  LOCALE_SABBREVMONTHNAME11 "nov"
  LOCALE_SABBREVMONTHNAME12 "dec"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Spain"
  LOCALE_SCURRENCY "€"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "luns"
  LOCALE_SDAYNAME2 "martes"
  LOCALE_SDAYNAME3 "mércores"
  LOCALE_SDAYNAME4 "xoves"
  LOCALE_SDAYNAME5 "venres"
  LOCALE_SDAYNAME6 "sábado"
  LOCALE_SDAYNAME7 "domingo"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Spain"
  LOCALE_SENGCURRNAME "Euro"
  LOCALE_SENGLANGUAGE "Galician"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "EUR"
  LOCALE_SISO3166CTRYNAME "ES"
  LOCALE_SISO639LANGNAME "gl"
  LOCALE_SLANGUAGE "Galician"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dddd, dd' de 'MMMM' de 'yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "xaneiro"
  LOCALE_SMONTHNAME2 "febreiro"
  LOCALE_SMONTHNAME3 "marzo"
  LOCALE_SMONTHNAME4 "abril"
  LOCALE_SMONTHNAME5 "maio"
  LOCALE_SMONTHNAME6 "xuño"
  LOCALE_SMONTHNAME7 "xullo"
  LOCALE_SMONTHNAME8 "agosto"
  LOCALE_SMONTHNAME9 "setembro"
  LOCALE_SMONTHNAME10 "outubro"
  LOCALE_SMONTHNAME11 "novembro"
  LOCALE_SMONTHNAME12 "decembro"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "gl-ES"
  LOCALE_SNATIVECTRYNAME "España"
  LOCALE_SNATIVECURRNAME "euro"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "galego (España)"
  LOCALE_SNATIVELANGNAME "galego"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "GAL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yy"
  LOCALE_SSHORTESTDAYNAME1 "lu"
  LOCALE_SSHORTESTDAYNAME2 "ma"
  LOCALE_SSHORTESTDAYNAME3 "mé"
  LOCALE_SSHORTESTDAYNAME4 "xo"
  LOCALE_SSHORTESTDAYNAME5 "ve"
  LOCALE_SSHORTESTDAYNAME6 "sá"
  LOCALE_SSHORTESTDAYNAME7 "do"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Default"
  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"
}
