/*
 * Locale definitions for Armenian
 *
 * 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_ARMENIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x042f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "374"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "0"
  LOCALE_IDEFAULTCODEPAGE "1"
  LOCALE_IDEFAULTCOUNTRY "374"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "042b"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "042b"
  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 "ARM"
  LOCALE_SABBREVDAYNAME1 "Երկ"
  LOCALE_SABBREVDAYNAME2 "Երք"
  LOCALE_SABBREVDAYNAME3 "Չրք"
  LOCALE_SABBREVDAYNAME4 "Հնգ"
  LOCALE_SABBREVDAYNAME5 "ՈՒր"
  LOCALE_SABBREVDAYNAME6 "Շբթ"
  LOCALE_SABBREVDAYNAME7 "Կիր"
  LOCALE_SABBREVLANGNAME "HYE"
  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 "Armenia"
  LOCALE_SCURRENCY "դր."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "Երկուշաբթի"
  LOCALE_SDAYNAME2 "Երեքշաբթի"
  LOCALE_SDAYNAME3 "Չորեքշաբթի"
  LOCALE_SDAYNAME4 "Հինգշաբթի"
  LOCALE_SDAYNAME5 "ՈՒրբաթ"
  LOCALE_SDAYNAME6 "Շաբաթ"
  LOCALE_SDAYNAME7 "Կիրակի"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Armenia"
  LOCALE_SENGCURRNAME "Armenian Dram"
  LOCALE_SENGLANGUAGE "Armenian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "AMD"
  LOCALE_SISO3166CTRYNAME "AM"
  LOCALE_SISO639LANGNAME "hy"
  LOCALE_SLANGUAGE "Armenian"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "d MMMM, yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Հունվար\0հունվարի"
  LOCALE_SMONTHNAME2 "Փետրվար\0փետրվարի"
  LOCALE_SMONTHNAME3 "Մարտ\0մարտի"
  LOCALE_SMONTHNAME4 "Ապրիլ\0ապրիլի"
  LOCALE_SMONTHNAME5 "Մայիս\0մայիսի"
  LOCALE_SMONTHNAME6 "Հունիս\0հունիսի"
  LOCALE_SMONTHNAME7 "Հուլիս\0հուլիսի"
  LOCALE_SMONTHNAME8 "Օգոստոս\0օգոստոսի"
  LOCALE_SMONTHNAME9 "Սեպտեմբեր\0սեպտեմբերի"
  LOCALE_SMONTHNAME10 "Հոկտեմբեր\0հոկտեմբերի"
  LOCALE_SMONTHNAME11 "Նոյեմբեր\0նոյեմբերի"
  LOCALE_SMONTHNAME12 "Դեկտեմբեր\0դեկտեմբերի"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "hy-AM"
  LOCALE_SNATIVECTRYNAME "Հայաստան"
  LOCALE_SNATIVECURRNAME "դրամ"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Հայերեն (Հայաստան)"
  LOCALE_SNATIVELANGNAME "Հայերեն"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "HYE "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Armn;"
  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"
}
