/*
 * Locale definitions for Kyrgyz (Cyrillic)
 *
 * 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_KYRGYZ, 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 "0"
  LOCALE_ICOUNTRY "996"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "996"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "440"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0440"
  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 "KGZ"
  LOCALE_SABBREVDAYNAME1 "Дш"
  LOCALE_SABBREVDAYNAME2 "Шш"
  LOCALE_SABBREVDAYNAME3 "Шр"
  LOCALE_SABBREVDAYNAME4 "Бш"
  LOCALE_SABBREVDAYNAME5 "Жм"
  LOCALE_SABBREVDAYNAME6 "Иш"
  LOCALE_SABBREVDAYNAME7 "Жш"
  LOCALE_SABBREVLANGNAME "KYR"
  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 "Kyrgyzstan"
  LOCALE_SCURRENCY "сом"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 L"\x0414\x04af\x0439\x0448\x04e9\x043c\x0431\x04af"
  LOCALE_SDAYNAME2 "Шейшемби"
  LOCALE_SDAYNAME3 "Шаршемби"
  LOCALE_SDAYNAME4 "Бейшемби"
  LOCALE_SDAYNAME5 "Жума"
  LOCALE_SDAYNAME6 "Ишемби"
  LOCALE_SDAYNAME7 "Жекшемби"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Kyrgyzstan"
  LOCALE_SENGCURRNAME "som"
  LOCALE_SENGLANGUAGE "Kyrgyz"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "KGS"
  LOCALE_SISO3166CTRYNAME "KG"
  LOCALE_SISO639LANGNAME "ky"
  LOCALE_SLANGUAGE "Kyrgyz (Cyrillic)"
  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 "ky-KG"
  LOCALE_SNAN "сан эмес"
  LOCALE_SNATIVECTRYNAME "Кыргызстан"
  LOCALE_SNATIVECURRNAME "сом"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Кыргыз (Кыргызстан)"
  LOCALE_SNATIVELANGNAME "Кыргыз"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "KIR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "dd.MM.yy"
  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"
}
