/*
 * Locale definitions for Afrikaans
 *
 * 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_AFRIKAANS, SUBLANG_DEFAULT
{
  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 "27"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "27"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0436"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28591"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0436"
  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 ""
  LOCALE_S2359 "nm"
  LOCALE_SABBREVCTRYNAME "ZAF"
  LOCALE_SABBREVDAYNAME1 "Maan"
  LOCALE_SABBREVDAYNAME2 "Dins"
  LOCALE_SABBREVDAYNAME3 "Woen"
  LOCALE_SABBREVDAYNAME4 "Dond"
  LOCALE_SABBREVDAYNAME5 "Vry"
  LOCALE_SABBREVDAYNAME6 "Sat"
  LOCALE_SABBREVDAYNAME7 "Son"
  LOCALE_SABBREVLANGNAME "AFK"
  LOCALE_SABBREVMONTHNAME1 "Jan"
  LOCALE_SABBREVMONTHNAME2 "Feb"
  LOCALE_SABBREVMONTHNAME3 "Mar"
  LOCALE_SABBREVMONTHNAME4 "Apr"
  LOCALE_SABBREVMONTHNAME5 "Mei"
  LOCALE_SABBREVMONTHNAME6 "Jun"
  LOCALE_SABBREVMONTHNAME7 "Jul"
  LOCALE_SABBREVMONTHNAME8 "Aug"
  LOCALE_SABBREVMONTHNAME9 "Sep"
  LOCALE_SABBREVMONTHNAME10 "Okt"
  LOCALE_SABBREVMONTHNAME11 "Nov"
  LOCALE_SABBREVMONTHNAME12 "Des"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "South Africa"
  LOCALE_SCURRENCY "R"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "Maandag"
  LOCALE_SDAYNAME2 "Dinsdag"
  LOCALE_SDAYNAME3 "Woensdag"
  LOCALE_SDAYNAME4 "Donderdag"
  LOCALE_SDAYNAME5 "Vrydag"
  LOCALE_SDAYNAME6 "Saterdag"
  LOCALE_SDAYNAME7 "Sondag"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "South Africa"
  LOCALE_SENGCURRNAME "South African Rand"
  LOCALE_SENGLANGUAGE "Afrikaans"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "ZAR"
  LOCALE_SISO3166CTRYNAME "ZA"
  LOCALE_SISO639LANGNAME "af"
  LOCALE_SLANGUAGE "Afrikaans"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dd MMMM yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Januarie"
  LOCALE_SMONTHNAME2 "Februarie"
  LOCALE_SMONTHNAME3 "Maart"
  LOCALE_SMONTHNAME4 "April"
  LOCALE_SMONTHNAME5 "Mei"
  LOCALE_SMONTHNAME6 "Junie"
  LOCALE_SMONTHNAME7 "Julie"
  LOCALE_SMONTHNAME8 "Augustus"
  LOCALE_SMONTHNAME9 "September"
  LOCALE_SMONTHNAME10 "Oktober"
  LOCALE_SMONTHNAME11 "November"
  LOCALE_SMONTHNAME12 "Desember"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "af-ZA"
  LOCALE_SNATIVECTRYNAME "Suid Afrika"
  LOCALE_SNATIVECURRNAME "Rand"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "Afrikaans"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "yyyy/MM/dd"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "hh: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"
}
