/*
 * Locale definitions for Arabic (Saudi Arabia)
 *
 * 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_SAUDI_ARABIA
{
  LOCALE_FONTSIGNATURE L"\x60af\x8000\x3848\x1000\x0008\x0000\x0000\x0800\x0040\x0000\x0000\x2000\x0040\x0000\x0000\x2008"
  LOCALE_ICALENDARTYPE "6"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "966"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1256"
  LOCALE_IDEFAULTCODEPAGE "720"
  LOCALE_IDEFAULTCOUNTRY "966"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20420"
  LOCALE_IDEFAULTLANGUAGE "0401"
  LOCALE_IDEFAULTMACCODEPAGE "10004"
  LOCALE_IDEFAULTUNIXCODEPAGE "28596"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "5"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0401"
  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 "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "ص"
  LOCALE_S2359 "م"
  LOCALE_SABBREVCTRYNAME "SAU"
  LOCALE_SABBREVDAYNAME1 "الاثنين"
  LOCALE_SABBREVDAYNAME2 "الثلاثاء"
  LOCALE_SABBREVDAYNAME3 "الاربعاء"
  LOCALE_SABBREVDAYNAME4 "الخميس"
  LOCALE_SABBREVDAYNAME5 "الجمعة"
  LOCALE_SABBREVDAYNAME6 "السبت"
  LOCALE_SABBREVDAYNAME7 "الاحد"
  LOCALE_SABBREVLANGNAME "ARA"
  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 "Saudi Arabia"
  LOCALE_SCURRENCY "ر.س.‏"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "الاثنين"
  LOCALE_SDAYNAME2 "الثلاثاء"
  LOCALE_SDAYNAME3 "الاربعاء"
  LOCALE_SDAYNAME4 "الخميس"
  LOCALE_SDAYNAME5 "الجمعة"
  LOCALE_SDAYNAME6 "السبت"
  LOCALE_SDAYNAME7 "الاحد"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Saudi Arabia"
  LOCALE_SENGCURRNAME "Saudi Riyal"
  LOCALE_SENGLANGUAGE "Arabic"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "SAR"
  LOCALE_SISO3166CTRYNAME "SA"
  LOCALE_SISO639LANGNAME "ar"
  LOCALE_SLANGUAGE "Arabic (Saudi Arabia)"
  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-SA"
  LOCALE_SNAN "ليس رقمًا"
  LOCALE_SNATIVECTRYNAME "المملكة العربية السعودية"
  LOCALE_SNATIVECURRNAME "ريال سعودي"
  LOCALE_SNATIVEDIGITS L"\x0660\x0661\x0662\x0663\x0664\x0665\x0666\x0667\x0668\x0669"
  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 "hh:mm tt"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "hh:mm:ss tt"
  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"
}
