/*
 * Locale definitions for Konkani
 *
 * 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_KONKANI, 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 "0457"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0457"
  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_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  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 "KNK"
  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 "Konkani"
  LOCALE_SGROUPING "3;2;0"
  LOCALE_SINTLSYMBOL "INR"
  LOCALE_SISO3166CTRYNAME "IN"
  LOCALE_SISO639LANGNAME "kok"
  LOCALE_SLANGUAGE "Konkani"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dd MMMM yyyy"
  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 "kok-IN"
  LOCALE_SNATIVECTRYNAME "भारत"
  LOCALE_SNATIVECURRNAME "रुपय"
  LOCALE_SNATIVEDIGITS "०१२३४५६७८९"
  LOCALE_SNATIVELANGNAME "कोंकणी"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Deva;"
  LOCALE_SSHORTDATE "dd-MM-yyyy"
  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"
}
