/*
 * Locale definitions for Welsh (United Kingdom)
 *
 * Copyright 1998 Marcel Baur
 * 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_WELSH, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x01ff\x003f\x8000\xffff"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "0"
  LOCALE_ICOUNTRY "44"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "28604"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "44"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20285"
  LOCALE_IDEFAULTLANGUAGE "0409"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28604"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0492"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "1"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "3"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "yb"
  LOCALE_S2359 "yp"
  LOCALE_SABBREVCTRYNAME "GBR"
  LOCALE_SABBREVDAYNAME1 "Lln"
  LOCALE_SABBREVDAYNAME2 "Maw"
  LOCALE_SABBREVDAYNAME3 "Mer"
  LOCALE_SABBREVDAYNAME4 "Iau"
  LOCALE_SABBREVDAYNAME5 "Gwe"
  LOCALE_SABBREVDAYNAME6 "Sad"
  LOCALE_SABBREVDAYNAME7 "Sul"
  LOCALE_SABBREVLANGNAME "CYM"
  LOCALE_SABBREVMONTHNAME1 "Ion"
  LOCALE_SABBREVMONTHNAME2 "Chw"
  LOCALE_SABBREVMONTHNAME3 "Maw"
  LOCALE_SABBREVMONTHNAME4 "Ebr"
  LOCALE_SABBREVMONTHNAME5 "Mai"
  LOCALE_SABBREVMONTHNAME6 "Meh"
  LOCALE_SABBREVMONTHNAME7 "Gor"
  LOCALE_SABBREVMONTHNAME8 "Aws"
  LOCALE_SABBREVMONTHNAME9 "Med"
  LOCALE_SABBREVMONTHNAME10 "Hyd"
  LOCALE_SABBREVMONTHNAME11 "Tch"
  LOCALE_SABBREVMONTHNAME12 "Rhg"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Cymru"
  LOCALE_SCURRENCY "£"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "Dydd Llun"
  LOCALE_SDAYNAME2 "Dydd Mawrth"
  LOCALE_SDAYNAME3 "Dydd Mercher"
  LOCALE_SDAYNAME4 "Dydd Iau"
  LOCALE_SDAYNAME5 "Dydd Gwener"
  LOCALE_SDAYNAME6 "Dydd Sadwrn"
  LOCALE_SDAYNAME7 "Dydd Sul"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Wales"
  LOCALE_SENGCURRNAME "UK Pound Sterling"
  LOCALE_SENGLANGUAGE "Welsh"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "GBP"
  LOCALE_SISO3166CTRYNAME "GB"
  LOCALE_SISO639LANGNAME "cy"
  LOCALE_SLANGUAGE "Welsh (United Kingdom)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dd MMMM yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Ionawr"
  LOCALE_SMONTHNAME2 "Chwefror"
  LOCALE_SMONTHNAME3 "Mawrth"
  LOCALE_SMONTHNAME4 "Ebrill"
  LOCALE_SMONTHNAME5 "Mai"
  LOCALE_SMONTHNAME6 "Mehefin"
  LOCALE_SMONTHNAME7 "Gorffennaf"
  LOCALE_SMONTHNAME8 "Awst"
  LOCALE_SMONTHNAME9 "Medi"
  LOCALE_SMONTHNAME10 "Hydref"
  LOCALE_SMONTHNAME11 "Tachwedd"
  LOCALE_SMONTHNAME12 "Rhagfyr"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "cy-GB"
  LOCALE_SNATIVECTRYNAME "Cymru"
  LOCALE_SNATIVECURRNAME "punt"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Cymraeg (Cymru)"
  LOCALE_SNATIVELANGNAME "Cymraeg"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "WEL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "Ll"
  LOCALE_SSHORTESTDAYNAME2 "Ma"
  LOCALE_SSHORTESTDAYNAME3 "Me"
  LOCALE_SSHORTESTDAYNAME4 "Ia"
  LOCALE_SSHORTESTDAYNAME5 "Gw"
  LOCALE_SSHORTESTDAYNAME6 "Sa"
  LOCALE_SSHORTESTDAYNAME7 "Su"
  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 "Unol Gorllewin Ewrop a Unedig"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Canolog Ewrop"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltig"
  LGRPID_GREEK+LGRPID_RES_BASE "Groeg"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Siapaneaidd"
  LGRPID_KOREAN+LGRPID_RES_BASE "Corea"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Tseiniaidd Traddodiadol"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Tseiniaidd Symleiddiedig"
  LGRPID_THAI+LGRPID_RES_BASE "Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebraeg"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabeg"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Fietnameg"
  LGRPID_INDIC+LGRPID_RES_BASE "Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armenia"
}
