/*
 * 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_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "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 "Հունվար"
  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 "hy-AM"
  LOCALE_SNATIVECTRYNAME "Հայաստան"
  LOCALE_SNATIVECURRNAME "դրամ"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "Հայերեն"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Armn;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  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"
}
