/*
 * Locale definitions for English (Philippines)
 *
 * 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(1252)

STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_PHILIPPINES
{
  LOCALE_FONTSIGNATURE L"\x00af\x8000\x38cb\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x8000\x00ff\x003f\x0000\xffff"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "63"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "0"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "437"
  LOCALE_IDEFAULTCOUNTRY "63"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "3409"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "3409"
  LOCALE_ILDATE "0"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "1"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "0"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "0"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "1"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "AM"
  LOCALE_S2359 "PM"
  LOCALE_SABBREVCTRYNAME "PHL"
  LOCALE_SABBREVDAYNAME1 "Mon"
  LOCALE_SABBREVDAYNAME2 "Tue"
  LOCALE_SABBREVDAYNAME3 "Wed"
  LOCALE_SABBREVDAYNAME4 "Thu"
  LOCALE_SABBREVDAYNAME5 "Fri"
  LOCALE_SABBREVDAYNAME6 "Sat"
  LOCALE_SABBREVDAYNAME7 "Sun"
  LOCALE_SABBREVLANGNAME "ENP"
  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 "Republic of the Philippines"
  LOCALE_SCURRENCY "Php"
  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 "Republic of the Philippines"
  LOCALE_SENGCURRNAME "Philippine Peso"
  LOCALE_SENGLANGUAGE "English"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "PHP"
  LOCALE_SISO3166CTRYNAME "PH"
  LOCALE_SISO639LANGNAME "en"
  LOCALE_SLANGUAGE "English (Philippines)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dddd, MMMM dd, 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-PH"
  LOCALE_SNATIVECTRYNAME "Philippines"
  LOCALE_SNATIVECURRNAME "Philippine Peso"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "English"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSHORTDATE "M/d/yyyy"
  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"
}
