/*
 * Locale definitions for English (Canada)
 *
 * 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_ENGLISH, SUBLANG_ENGLISH_CAN
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x00ff\x003f\x0000\xffff"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "2"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "2"
  LOCALE_IDEFAULTEBCDICCODEPAGE "037"
  LOCALE_IDEFAULTLANGUAGE "1009"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "1009"
  LOCALE_ILDATE "0"
  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 "1"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "AM"
  LOCALE_S2359 "PM"
  LOCALE_SABBREVCTRYNAME "CAN"
  LOCALE_SABBREVDAYNAME1 "Mon"
  LOCALE_SABBREVDAYNAME2 "Tue"
  LOCALE_SABBREVDAYNAME3 "Wed"
  LOCALE_SABBREVDAYNAME4 "Thu"
  LOCALE_SABBREVDAYNAME5 "Fri"
  LOCALE_SABBREVDAYNAME6 "Sat"
  LOCALE_SABBREVDAYNAME7 "Sun"
  LOCALE_SABBREVLANGNAME "ENC"
  LOCALE_SABBREVMONTHNAME1 "Jan"
  LOCALE_SABBREVMONTHNAME2 "Feb"
  LOCALE_SABBREVMONTHNAME3 "Mar"
  LOCALE_SABBREVMONTHNAME4 "Apr"
  LOCALE_SABBREVMONTHNAME5 "May"
  LOCALE_SABBREVMONTHNAME6 "Jun"
  LOCALE_SABBREVMONTHNAME7 "Jul"
  LOCALE_SABBREVMONTHNAME8 "Aug"
  LOCALE_SABBREVMONTHNAME9 "Sep"
  LOCALE_SABBREVMONTHNAME10 "Oct"
  LOCALE_SABBREVMONTHNAME11 "Nov"
  LOCALE_SABBREVMONTHNAME12 "Dec"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Canada"
  LOCALE_SCURRENCY "$"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "Monday"
  LOCALE_SDAYNAME2 "Tuesday"
  LOCALE_SDAYNAME3 "Wednesday"
  LOCALE_SDAYNAME4 "Thursday"
  LOCALE_SDAYNAME5 "Friday"
  LOCALE_SDAYNAME6 "Saturday"
  LOCALE_SDAYNAME7 "Sunday"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Canada"
  LOCALE_SENGCURRNAME "Canadian Dollar"
  LOCALE_SENGLANGUAGE "English"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "CAD"
  LOCALE_SISO3166CTRYNAME "CA"
  LOCALE_SISO639LANGNAME "en"
  LOCALE_SLANGUAGE "English (Canada)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "MMMM d, yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "January"
  LOCALE_SMONTHNAME2 "February"
  LOCALE_SMONTHNAME3 "March"
  LOCALE_SMONTHNAME4 "April"
  LOCALE_SMONTHNAME5 "May"
  LOCALE_SMONTHNAME6 "June"
  LOCALE_SMONTHNAME7 "July"
  LOCALE_SMONTHNAME8 "August"
  LOCALE_SMONTHNAME9 "September"
  LOCALE_SMONTHNAME10 "October"
  LOCALE_SMONTHNAME11 "November"
  LOCALE_SMONTHNAME12 "December"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "en-CA"
  LOCALE_SNATIVECTRYNAME "Canada"
  LOCALE_SNATIVECURRNAME "Canadian Dollar"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "English (Canada)"
  LOCALE_SNATIVELANGNAME "English"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ENG "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "Mo"
  LOCALE_SSHORTESTDAYNAME2 "Tu"
  LOCALE_SSHORTESTDAYNAME3 "We"
  LOCALE_SSHORTESTDAYNAME4 "Th"
  LOCALE_SSHORTESTDAYNAME5 "Fr"
  LOCALE_SSHORTESTDAYNAME6 "Sa"
  LOCALE_SSHORTESTDAYNAME7 "Su"
  LOCALE_SSHORTTIME "h:mm tt"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "h:mm:ss tt"
  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"
}
