/*
 * Locale definitions for Azeri (Latin)
 *
 * 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_LATIN
{
  LOCALE_FONTSIGNATURE L"\x0027\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0400\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "994"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1254"
  LOCALE_IDEFAULTCODEPAGE "857"
  LOCALE_IDEFAULTCOUNTRY "994"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20905"
  LOCALE_IDEFAULTLANGUAGE "042c"
  LOCALE_IDEFAULTMACCODEPAGE "10081"
  LOCALE_IDEFAULTUNIXCODEPAGE "28599"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "042c"
  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 "Be"
  LOCALE_SABBREVDAYNAME2 "Ça"
  LOCALE_SABBREVDAYNAME3 "Ç"
  LOCALE_SABBREVDAYNAME4 "Ca"
  LOCALE_SABBREVDAYNAME5 "C"
  LOCALE_SABBREVDAYNAME6 "Ş"
  LOCALE_SABBREVDAYNAME7 "B"
  LOCALE_SABBREVLANGNAME "AZE"
  LOCALE_SABBREVMONTHNAME1 "Yan"
  LOCALE_SABBREVMONTHNAME2 "Fev"
  LOCALE_SABBREVMONTHNAME3 "Mar"
  LOCALE_SABBREVMONTHNAME4 "Apr"
  LOCALE_SABBREVMONTHNAME5 "May"
  LOCALE_SABBREVMONTHNAME6 "İyun"
  LOCALE_SABBREVMONTHNAME7 "İyul"
  LOCALE_SABBREVMONTHNAME8 "Avg"
  LOCALE_SABBREVMONTHNAME9 "Sen"
  LOCALE_SABBREVMONTHNAME10 "Okt"
  LOCALE_SABBREVMONTHNAME11 "Noy"
  LOCALE_SABBREVMONTHNAME12 "Dek"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Azerbaijan"
  LOCALE_SCURRENCY "man."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 L"Bazar\x00a0ert\x0259si"
  LOCALE_SDAYNAME2 L"\x00c7\x0259r\x015f\x0259nb\x0259\x00a0ax\x015fam\x0131"
  LOCALE_SDAYNAME3 L"\x00c7\x0259r\x015f\x0259nb\x0259"
  LOCALE_SDAYNAME4 L"C\x00fcm\x0259\x00a0ax\x015fam\x0131"
  LOCALE_SDAYNAME5 L"C\x00fcm\x0259"
  LOCALE_SDAYNAME6 L"\x015e\x0259nb\x0259"
  LOCALE_SDAYNAME7 "Bazar"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Azerbaijan"
  LOCALE_SENGCURRNAME "Azerbaijanian Manat"
  LOCALE_SENGLANGUAGE "Azeri (Latin)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "AZM"
  LOCALE_SISO3166CTRYNAME "AZ"
  LOCALE_SISO639LANGNAME "az"
  LOCALE_SLANGUAGE "Azeri (Latin)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Yanvar"
  LOCALE_SMONTHNAME2 "Fevral"
  LOCALE_SMONTHNAME3 "Mart"
  LOCALE_SMONTHNAME4 "Aprel"
  LOCALE_SMONTHNAME5 "May"
  LOCALE_SMONTHNAME6 "İyun"
  LOCALE_SMONTHNAME7 "İyul"
  LOCALE_SMONTHNAME8 "Avgust"
  LOCALE_SMONTHNAME9 "Sentyabr"
  LOCALE_SMONTHNAME10 "Oktyabr"
  LOCALE_SMONTHNAME11 "Noyabr"
  LOCALE_SMONTHNAME12 "Dekabr"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "az-Latn-AZ"
  LOCALE_SNATIVECTRYNAME L"Az\x0259rbaycanca"
  LOCALE_SNATIVECURRNAME "manat"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME ""
  LOCALE_SNATIVELANGNAME L"Az\x0259rbaycan\x00ad\x0131l\x0131"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "AZE "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "Be"
  LOCALE_SSHORTESTDAYNAME2 "Ça"
  LOCALE_SSHORTESTDAYNAME3 "Ç"
  LOCALE_SSHORTESTDAYNAME4 "Ca"
  LOCALE_SSHORTESTDAYNAME5 "C"
  LOCALE_SSHORTESTDAYNAME6 "Ş"
  LOCALE_SSHORTESTDAYNAME7 "B"
  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"
}
