/*
 * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#pragma code_page(65001) /* UTF-8 */

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 "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "91"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "0"
  LOCALE_IDEFAULTCODEPAGE "1"
  LOCALE_IDEFAULTCOUNTRY "91"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "044f"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "044f"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "12"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "1"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "पूर्वाह्न"
  LOCALE_S2359 "अपराह्न"
  LOCALE_SABBREVCTRYNAME "IND"
  LOCALE_SABBREVDAYNAME1 "सोमवासरः"
  LOCALE_SABBREVDAYNAME2 "मङ्गलवासरः"
  LOCALE_SABBREVDAYNAME3 "बुधवासरः"
  LOCALE_SABBREVDAYNAME4 "गुरुवासरः"
  LOCALE_SABBREVDAYNAME5 "शुक्रवासरः"
  LOCALE_SABBREVDAYNAME6 "शनिवासरः"
  LOCALE_SABBREVDAYNAME7 "रविवासरः"
  LOCALE_SABBREVLANGNAME "SAN"
  LOCALE_SABBREVMONTHNAME1 "जनवरी"
  LOCALE_SABBREVMONTHNAME2 "फरवरी"
  LOCALE_SABBREVMONTHNAME3 "मार्च"
  LOCALE_SABBREVMONTHNAME4 "अप्रैल"
  LOCALE_SABBREVMONTHNAME5 "मई"
  LOCALE_SABBREVMONTHNAME6 "जून"
  LOCALE_SABBREVMONTHNAME7 "जुलाई"
  LOCALE_SABBREVMONTHNAME8 "अगस्त"
  LOCALE_SABBREVMONTHNAME9 "सितम्बर"
  LOCALE_SABBREVMONTHNAME10 "अक्तूबर"
  LOCALE_SABBREVMONTHNAME11 "नवम्बर"
  LOCALE_SABBREVMONTHNAME12 "दिसम्बर"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "India"
  LOCALE_SCURRENCY "रु"
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "सोमवासरः"
  LOCALE_SDAYNAME2 "मङ्गलवासरः"
  LOCALE_SDAYNAME3 "बुधवासरः"
  LOCALE_SDAYNAME4 "गुरुवासरः"
  LOCALE_SDAYNAME5 "शुक्रवासरः"
  LOCALE_SDAYNAME6 "शनिवासरः"
  LOCALE_SDAYNAME7 "रविवासरः"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "India"
  LOCALE_SENGCURRNAME "Indian Rupee"
  LOCALE_SENGLANGUAGE "Sanskrit"
  LOCALE_SGROUPING "3;2;0"
  LOCALE_SINTLSYMBOL "INR"
  LOCALE_SISO3166CTRYNAME "IN"
  LOCALE_SISO639LANGNAME "sa"
  LOCALE_SLANGUAGE "Sanskrit"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dd MMMM yyyy dddd"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;2;0"
  LOCALE_SMONTHNAME1 "जनवरी"
  LOCALE_SMONTHNAME2 "फरवरी"
  LOCALE_SMONTHNAME3 "मार्च"
  LOCALE_SMONTHNAME4 "अप्रैल"
  LOCALE_SMONTHNAME5 "मई"
  LOCALE_SMONTHNAME6 "जून"
  LOCALE_SMONTHNAME7 "जुलाई"
  LOCALE_SMONTHNAME8 "अगस्त"
  LOCALE_SMONTHNAME9 "सितम्बर"
  LOCALE_SMONTHNAME10 "अक्तूबर"
  LOCALE_SMONTHNAME11 "नवम्बर"
  LOCALE_SMONTHNAME12 "दिसम्बर"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "sa-IN"
  LOCALE_SNATIVECTRYNAME "भारतम्"
  LOCALE_SNATIVECURRNAME "रु्यकम्"
  LOCALE_SNATIVEDIGITS "०१२३४५६७८९"
  LOCALE_SNATIVEDISPLAYNAME "संस्कृत (भारतम्)"
  LOCALE_SNATIVELANGNAME "संस्कृत"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "SAN "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Deva;"
  LOCALE_SSHORTDATE "dd-MM-yyyy"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  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"
}
