/*
 * 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_SOPENTYPELANGUAGETAG "TEL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Telu;"
  LOCALE_SSHORTDATE "dd-MM-yy"
  LOCALE_SSHORTESTDAYNAME1 "సో"
  LOCALE_SSHORTESTDAYNAME2 "మం"
  LOCALE_SSHORTESTDAYNAME3 "బు"
  LOCALE_SSHORTESTDAYNAME4 "గు"
  LOCALE_SSHORTESTDAYNAME5 "శు"
  LOCALE_SSHORTESTDAYNAME6 "శ"
  LOCALE_SSHORTESTDAYNAME7 "ఆ"
  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"
}
