/*
 * 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_SNAN "NaN"
  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"
}
