/*
 * Locale definitions for Sanskrit
 *
 * 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(0) /* Unicode only */

STRINGTABLE LANGUAGE LANG_SANSKRIT, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x802f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE L"1"
  LOCALE_ICENTURY L"1"
  LOCALE_ICOUNTRY L"91"
  LOCALE_ICURRDIGITS L"2"
  LOCALE_ICURRENCY L"2"
  LOCALE_IDATE L"1"
  LOCALE_IDAYLZERO L"1"
  LOCALE_IDEFAULTANSICODEPAGE L"0"
  LOCALE_IDEFAULTCODEPAGE L"1"
  LOCALE_IDEFAULTCOUNTRY L"91"
  LOCALE_IDEFAULTEBCDICCODEPAGE L"500"
  LOCALE_IDEFAULTLANGUAGE L"044f"
  LOCALE_IDEFAULTMACCODEPAGE L"2"
  LOCALE_IDEFAULTUNIXCODEPAGE L"65001"
  LOCALE_IDIGITS L"2"
  LOCALE_IDIGITSUBSTITUTION L"1"
  LOCALE_IFIRSTDAYOFWEEK L"6"
  LOCALE_IFIRSTWEEKOFYEAR L"0"
  LOCALE_IINTLCURRDIGITS L"2"
  LOCALE_ILANGUAGE L"044f"
  LOCALE_ILDATE L"1"
  LOCALE_ILZERO L"1"
  LOCALE_IMEASURE L"0"
  LOCALE_IMONLZERO L"1"
  LOCALE_INEGCURR L"12"
  LOCALE_INEGNUMBER L"1"
  LOCALE_INEGSEPBYSPACE L"1"
  LOCALE_INEGSIGNPOSN L"4"
  LOCALE_INEGSYMPRECEDES L"1"
  LOCALE_IOPTIONALCALENDAR L"0"
  LOCALE_IPAPERSIZE L"9"
  LOCALE_IPOSSEPBYSPACE L"1"
  LOCALE_IPOSSIGNPOSN L"4"
  LOCALE_IPOSSYMPRECEDES L"1"
  LOCALE_ITIME L"1"
  LOCALE_ITIMEMARKPOSN L"1"
  LOCALE_ITLZERO L"1"
  LOCALE_S1159 L"\x092a\x0942\x0930\x094d\x0935\x093e\x0939\x094d\x0928"
  LOCALE_S2359 L"\x0905\x092a\x0930\x093e\x0939\x094d\x0928"
  LOCALE_SABBREVCTRYNAME L"IND"
  LOCALE_SABBREVDAYNAME1 L"\x0938\x094b\x092e\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME2 L"\x092e\x0919\x094d\x0917\x0932\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME3 L"\x092c\x0941\x0927\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME4 L"\x0917\x0941\x0930\x0941\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME5 L"\x0936\x0941\x0915\x094d\x0930\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME6 L"\x0936\x0928\x093f\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVDAYNAME7 L"\x0930\x0935\x093f\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SABBREVLANGNAME L"SAN"
  LOCALE_SABBREVMONTHNAME1 L"\x091c\x0928\x0935\x0930\x0940"
  LOCALE_SABBREVMONTHNAME2 L"\x092b\x0930\x0935\x0930\x0940"
  LOCALE_SABBREVMONTHNAME3 L"\x092e\x093e\x0930\x094d\x091a"
  LOCALE_SABBREVMONTHNAME4 L"\x0905\x092a\x094d\x0930\x0948\x0932"
  LOCALE_SABBREVMONTHNAME5 L"\x092e\x0908"
  LOCALE_SABBREVMONTHNAME6 L"\x091c\x0942\x0928"
  LOCALE_SABBREVMONTHNAME7 L"\x091c\x0941\x0932\x093e\x0908"
  LOCALE_SABBREVMONTHNAME8 L"\x0905\x0917\x0938\x094d\x0924"
  LOCALE_SABBREVMONTHNAME9 L"\x0938\x093f\x0924\x092e\x094d\x092c\x0930"
  LOCALE_SABBREVMONTHNAME10 L"\x0905\x0915\x094d\x0924\x0942\x092c\x0930"
  LOCALE_SABBREVMONTHNAME11 L"\x0928\x0935\x092e\x094d\x092c\x0930"
  LOCALE_SABBREVMONTHNAME12 L"\x0926\x093f\x0938\x092e\x094d\x092c\x0930"
  LOCALE_SABBREVMONTHNAME13 L""
  LOCALE_SCOUNTRY L"India"
  LOCALE_SCURRENCY L"\x0930\x0941"
  LOCALE_SDATE L"-"
  LOCALE_SDAYNAME1 L"\x0938\x094b\x092e\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME2 L"\x092e\x0919\x094d\x0917\x0932\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME3 L"\x092c\x0941\x0927\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME4 L"\x0917\x0941\x0930\x0941\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME5 L"\x0936\x0941\x0915\x094d\x0930\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME6 L"\x0936\x0928\x093f\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDAYNAME7 L"\x0930\x0935\x093f\x0935\x093e\x0938\x0930\x0903"
  LOCALE_SDECIMAL L"."
  LOCALE_SENGCOUNTRY L"India"
  LOCALE_SENGCURRNAME L"Indian Rupee"
  LOCALE_SENGLANGUAGE L"Sanskrit"
  LOCALE_SGROUPING L"3;2;0"
  LOCALE_SINTLSYMBOL L"INR"
  LOCALE_SISO3166CTRYNAME L"IN"
  LOCALE_SISO639LANGNAME L"sa"
  LOCALE_SLANGUAGE L"Sanskrit"
  LOCALE_SLIST L","
  LOCALE_SLONGDATE L"dd MMMM yyyy dddd"
  LOCALE_SMONDECIMALSEP L"."
  LOCALE_SMONGROUPING L"3;2;0"
  LOCALE_SMONTHNAME1 L"\x091c\x0928\x0935\x0930\x0940"
  LOCALE_SMONTHNAME2 L"\x092b\x0930\x0935\x0930\x0940"
  LOCALE_SMONTHNAME3 L"\x092e\x093e\x0930\x094d\x091a"
  LOCALE_SMONTHNAME4 L"\x0905\x092a\x094d\x0930\x0948\x0932"
  LOCALE_SMONTHNAME5 L"\x092e\x0908"
  LOCALE_SMONTHNAME6 L"\x091c\x0942\x0928"
  LOCALE_SMONTHNAME7 L"\x091c\x0941\x0932\x093e\x0908"
  LOCALE_SMONTHNAME8 L"\x0905\x0917\x0938\x094d\x0924"
  LOCALE_SMONTHNAME9 L"\x0938\x093f\x0924\x092e\x094d\x092c\x0930"
  LOCALE_SMONTHNAME10 L"\x0905\x0915\x094d\x0924\x0942\x092c\x0930"
  LOCALE_SMONTHNAME11 L"\x0928\x0935\x092e\x094d\x092c\x0930"
  LOCALE_SMONTHNAME12 L"\x0926\x093f\x0938\x092e\x094d\x092c\x0930"
  LOCALE_SMONTHNAME13 L""
  LOCALE_SMONTHOUSANDSEP L","
  LOCALE_SNATIVECTRYNAME L"\x092d\x093e\x0930\x0924\x092e\x094d"
  LOCALE_SNATIVECURRNAME L"\x0930\x0941\x094d\x092f\x0915\x092e\x094d"
  LOCALE_SNATIVEDIGITS L"\x0966\x0967\x0968\x0969\x096a\x096b\x096c\x096d\x096e\x096f"
  LOCALE_SNATIVELANGNAME L"\x0938\x0902\x0938\x094d\x0915\x0943\x0924"
  LOCALE_SNEGATIVESIGN L"-"
  LOCALE_SPOSITIVESIGN L""
  LOCALE_SSHORTDATE L"dd-MM-yyyy"
  LOCALE_SSORTNAME L"Default"
  LOCALE_STHOUSAND L","
  LOCALE_STIME L":"
  LOCALE_STIMEFORMAT L"HH:mm:ss"
  LOCALE_SYEARMONTH L"MMMM, yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE L"Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE L"Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE L"Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE L"Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE L"Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE L"Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE L"Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE L"Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE L"Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE L"Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE L"Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE L"Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE L"Arabic" 
  LGRPID_VIETNAMESE+LGRPID_RES_BASE L"Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE L"Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE L"Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE L"Armenian"
}
