/*
 * Locale definitions for Tatar
 *
 * 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_TATAR, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0203\x8000\x3848\x0000\x0000\x0000\x0000\x0000\x0004\x0000\x0000\x0002\x0004\x0000\x0000\x0202"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "7"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "7"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "0444"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"  /* FIXME */
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0444"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "TAT"
  LOCALE_SABBREVDAYNAME1 L"\x0414\x04af\x0448"
  LOCALE_SABBREVDAYNAME2 "Сиш"
  LOCALE_SABBREVDAYNAME3 L"\x0427\x04d9\x0440\x0448"
  LOCALE_SABBREVDAYNAME4 L"\x041f\x04d9\x043d\x0497"
  LOCALE_SABBREVDAYNAME5 L"\x0496\x043e\x043c"
  LOCALE_SABBREVDAYNAME6 "Шим"
  LOCALE_SABBREVDAYNAME7 "Якш"
  LOCALE_SABBREVLANGNAME "TTT"
  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 "Tatarstan"
  LOCALE_SCURRENCY "р."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 L"\x0414\x04af\x0448\x04d9\x043c\x0431\x0435"
  LOCALE_SDAYNAME2 L"\x0421\x0438\x0448\x04d9\x043c\x0431\x0435"
  LOCALE_SDAYNAME3 L"\x0427\x04d9\x0440\x0448\x04d9\x043c\x0431\x0435"
  LOCALE_SDAYNAME4 L"\x041f\x04d9\x043d\x0497\x0435\x0448\x04d9\x043c\x0431\x0435"
  LOCALE_SDAYNAME5 L"\x0496\x043e\x043c\x0433\x0430"
  LOCALE_SDAYNAME6 L"\x0428\x0438\x043c\x0431\x04d9"
  LOCALE_SDAYNAME7 L"\x042f\x043a\x0448\x04d9\x043c\x0431\x0435"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Tatarstan"
  LOCALE_SENGCURRNAME "Russian Ruble"
  LOCALE_SENGLANGUAGE "Tatar"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "RUR"
  LOCALE_SISO3166CTRYNAME "TA"
  LOCALE_SISO639LANGNAME "tt"
  LOCALE_SLANGUAGE "Tatar"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;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 "tt-TA"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Татарстан"
  LOCALE_SNATIVECURRNAME "рубль"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Татар (Татарстан)"
  LOCALE_SNATIVELANGNAME "Татар"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "TAT "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;" /* FIXME? */
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "д"
  LOCALE_SSHORTESTDAYNAME2 "с"
  LOCALE_SSHORTESTDAYNAME3 "ч"
  LOCALE_SSHORTESTDAYNAME4 "п"
  LOCALE_SSHORTESTDAYNAME5 "җ"
  LOCALE_SSHORTESTDAYNAME6 "ш"
  LOCALE_SSHORTESTDAYNAME7 "я"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND " "
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H: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"
}
