/*
 * Locale definitions for Arabic (Morocco)
 *
 * 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_ARABIC, SUBLANG_ARABIC_MOROCCO
{
  LOCALE_FONTSIGNATURE L"\x60af\x8000\x3848\x1000\x0008\x0000\x0000\x0800\x0040\x0000\x0000\x2000\x0040\x0000\x0000\x2008"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "212"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1256"
  LOCALE_IDEFAULTCODEPAGE "720"
  LOCALE_IDEFAULTCOUNTRY "212"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20420"
  LOCALE_IDEFAULTLANGUAGE "1801"
  LOCALE_IDEFAULTMACCODEPAGE "10004"
  LOCALE_IDEFAULTUNIXCODEPAGE "28596"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "1801"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "3"
  LOCALE_INEGNUMBER "3"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "2"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "6"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "2"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "1"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "ص"
  LOCALE_S2359 "م"
  LOCALE_SABBREVCTRYNAME "MAR"
  LOCALE_SABBREVDAYNAME1 "الاثنين"
  LOCALE_SABBREVDAYNAME2 "الثلاثاء"
  LOCALE_SABBREVDAYNAME3 "الاربعاء"
  LOCALE_SABBREVDAYNAME4 "الخميس"
  LOCALE_SABBREVDAYNAME5 "الجمعة"
  LOCALE_SABBREVDAYNAME6 "السبت"
  LOCALE_SABBREVDAYNAME7 "الاحد"
  LOCALE_SABBREVLANGNAME "ARM"
  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 "Morocco"
  LOCALE_SCURRENCY "د.م.‏"
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "الاثنين"
  LOCALE_SDAYNAME2 "الثلاثاء"
  LOCALE_SDAYNAME3 "الاربعاء"
  LOCALE_SDAYNAME4 "الخميس"
  LOCALE_SDAYNAME5 "الجمعة"
  LOCALE_SDAYNAME6 "السبت"
  LOCALE_SDAYNAME7 "الاحد"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Morocco"
  LOCALE_SENGCURRNAME "Moroccan Dirham"
  LOCALE_SENGLANGUAGE "Arabic"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "MAD"
  LOCALE_SISO3166CTRYNAME "MA"
  LOCALE_SISO639LANGNAME "ar"
  LOCALE_SLANGUAGE "Arabic (Morocco)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dd 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 "ar-MA"
  LOCALE_SNATIVECTRYNAME "المملكة المغربية"
  LOCALE_SNATIVECURRNAME "درهم مغربي"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "العربية (المملكة المغربية)"
  LOCALE_SNATIVELANGNAME "العربية"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ARA "
  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"
}
