/*
 * Locale definitions for Tamil
 *
 * 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_TAMIL, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8010\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  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 "0449"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0449"
  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 "TAM"
  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 "Tamil"
  LOCALE_SGROUPING "3;2;0"
  LOCALE_SINTLSYMBOL "INR"
  LOCALE_SISO3166CTRYNAME "IN"
  LOCALE_SISO639LANGNAME "ta"
  LOCALE_SLANGUAGE "Tamil"
  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 "ta-IN"
  LOCALE_SNATIVECTRYNAME "இந்தியா"
  LOCALE_SNATIVECURRNAME "ரூபாய்"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "தமிழ்"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Taml;"
  LOCALE_SSHORTDATE "dd-MM-yyyy"
  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"
}
