/*
 * Locale definitions for Telugu
 *
 * 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_TELUGU, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8020\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 "044a"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "044a"
  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 "TE"
  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 "Telugu"
  LOCALE_SGROUPING "3;2;0"
  LOCALE_SINTLSYMBOL "INR"
  LOCALE_SISO3166CTRYNAME "IN"
  LOCALE_SISO639LANGNAME "te"
  LOCALE_SLANGUAGE "Telugu"
  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 "te-IN"
  LOCALE_SNATIVECTRYNAME "భారత దేశం"
  LOCALE_SNATIVECURRNAME "రూపాయి"
  LOCALE_SNATIVEDIGITS "౦౧౨౩౪౫౬౭౮౯"
  LOCALE_SNATIVELANGNAME "తెలుగు"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Telu;"
  LOCALE_SSHORTDATE "dd-MM-yy"
  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"
}
