/*
 * Locale definitions for English (South Africa)
 *
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#pragma code_page(1252)

STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_SOUTH_AFRICA
{
  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 "27"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "437"
  LOCALE_IDEFAULTCOUNTRY "27"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "1c09"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "1c09"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "2"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "AM"
  LOCALE_S2359 "PM"
  LOCALE_SABBREVCTRYNAME "ZAF"
  LOCALE_SABBREVDAYNAME1 "Mon"
  LOCALE_SABBREVDAYNAME2 "Tue"
  LOCALE_SABBREVDAYNAME3 "Wed"
  LOCALE_SABBREVDAYNAME4 "Thu"
  LOCALE_SABBREVDAYNAME5 "Fri"
  LOCALE_SABBREVDAYNAME6 "Sat"
  LOCALE_SABBREVDAYNAME7 "Sun"
  LOCALE_SABBREVLANGNAME "ENS"
  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 "South Africa"
  LOCALE_SCURRENCY "R"
  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 "South Africa"
  LOCALE_SENGCURRNAME "South African Rand"
  LOCALE_SENGLANGUAGE "English"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "ZAR"
  LOCALE_SISO3166CTRYNAME "ZA"
  LOCALE_SISO639LANGNAME "en"
  LOCALE_SLANGUAGE "English (South Africa)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dd MMMM 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_SNATIVECTRYNAME "South Africa"
  LOCALE_SNATIVECURRNAME "Rand"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "English"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSHORTDATE "yyyy/MM/dd"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "hh:mm:ss tt"
  LOCALE_SYEARMONTH "MMMM yyyy"
}
