/*
 * 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_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 "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_SNATIVEDISPLAYNAME "తెలుగు (భారత దేశం)"
  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"
}
