/*
 * Locale definitions for Azeri (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_AZERI, SUBLANG_AZERI_CYRILLIC
{
  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 "994"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "994"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "082c"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "082c"
  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 "AZE"
  LOCALE_SABBREVDAYNAME1 "Бе"
  LOCALE_SABBREVDAYNAME2 "Ча"
  LOCALE_SABBREVDAYNAME3 "Ч"
  LOCALE_SABBREVDAYNAME4 L"\x04b8\x0430"
  LOCALE_SABBREVDAYNAME5 L"\x04b8"
  LOCALE_SABBREVDAYNAME6 "Ш"
  LOCALE_SABBREVDAYNAME7 "Б"
  LOCALE_SABBREVLANGNAME "AZE"
  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 "Azerbaijan"
  LOCALE_SCURRENCY "ман."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 L"\x0411\x0430\x0437\x0430\x0440\x00a0\x0435\x0440\x0442\x04d9\x0441\x0438"
  LOCALE_SDAYNAME2 L"\x0427\x04d9\x0440\x0448\x04d9\x043d\x0431\x04d9\x00a0\x0430\x0445\x0448\x0430\x043c\x044b"
  LOCALE_SDAYNAME3 L"\x0427\x04d9\x0440\x0448\x04d9\x043d\x0431\x04d9"
  LOCALE_SDAYNAME4 L"\x04b8\x04af\x043c\x04d9\x00a0\x0430\x0445\x0448\x0430\x043c\x044b"
  LOCALE_SDAYNAME5 L"\x04b8\x04af\x043c\x04d9"
  LOCALE_SDAYNAME6 L"\x0428\x04d9\x043d\x0431\x04d9"
  LOCALE_SDAYNAME7 "Базар"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Azerbaijan"
  LOCALE_SENGCURRNAME "Azerbaijanian Manat"
  LOCALE_SENGLANGUAGE "Azeri (Cyrillic)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "AZM"
  LOCALE_SISO3166CTRYNAME "AZ"
  LOCALE_SISO639LANGNAME "az"
  LOCALE_SLANGUAGE "Azeri (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 "az-AZ"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME L"\x0410\x0437\x04d9\x0440\x0431\x0430\x0458\x04b9\x0430\x043d"
  LOCALE_SNATIVECURRNAME "рубль"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME ""
  LOCALE_SNATIVELANGNAME L"\x0410\x0437\x04d9\x0440\x0431\x0430\x0458\x04b9\x0430\x043d"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "AZE "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Arab;"
  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"
}
