/*
 * Locale definitions for Punjabi
 *
 * 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_PUNJABI, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8002\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "0"
  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 "0446"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0446"
  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 "0"
  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 "PAN"
  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 "Punjabi"
  LOCALE_SGROUPING "3;2;0"
  LOCALE_SINTLSYMBOL "INR"
  LOCALE_SISO3166CTRYNAME "IN"
  LOCALE_SISO639LANGNAME "pa"
  LOCALE_SLANGUAGE "Punjabi"
  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 "pa-IN"
  LOCALE_SNATIVECTRYNAME "ਭਾਰਤ"
  LOCALE_SNATIVECURRNAME "ਰੁਪਿਆ"
  LOCALE_SNATIVEDIGITS "੦੧੨੩੪੫੬੭੮੯"
  LOCALE_SNATIVELANGNAME "ਪੰਜਾਬੀ"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Guru;"
  LOCALE_SSHORTDATE "dd-MM-yy"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "tt 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"
}
