/*
 * 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_SNAN "NaN"
  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"
}
