/*
 * Locale definitions for Arabic (Jordan)
 *
 * 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_JORDAN
{
  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 "962"
  LOCALE_ICURRDIGITS "3"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1256"
  LOCALE_IDEFAULTCODEPAGE "720"
  LOCALE_IDEFAULTCOUNTRY "962"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20420"
  LOCALE_IDEFAULTLANGUAGE "2c01"
  LOCALE_IDEFAULTMACCODEPAGE "10004"
  LOCALE_IDEFAULTUNIXCODEPAGE "28596"
  LOCALE_IDIGITS "3"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "5"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "3"
  LOCALE_ILANGUAGE "2c01"
  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 "JOR"
  LOCALE_SABBREVDAYNAME1 "الاثنين"
  LOCALE_SABBREVDAYNAME2 "الثلاثاء"
  LOCALE_SABBREVDAYNAME3 "الاربعاء"
  LOCALE_SABBREVDAYNAME4 "الخميس"
  LOCALE_SABBREVDAYNAME5 "الجمعة"
  LOCALE_SABBREVDAYNAME6 "السبت"
  LOCALE_SABBREVDAYNAME7 "الاحد"
  LOCALE_SABBREVLANGNAME "ARJ"
  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 "Jordan"
  LOCALE_SCURRENCY "د.ا.‏"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "الاثنين"
  LOCALE_SDAYNAME2 "الثلاثاء"
  LOCALE_SDAYNAME3 "الاربعاء"
  LOCALE_SDAYNAME4 "الخميس"
  LOCALE_SDAYNAME5 "الجمعة"
  LOCALE_SDAYNAME6 "السبت"
  LOCALE_SDAYNAME7 "الاحد"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Jordan"
  LOCALE_SENGCURRNAME "Jordanian Dinar"
  LOCALE_SENGLANGUAGE "Arabic"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "JOD"
  LOCALE_SISO3166CTRYNAME "JO"
  LOCALE_SISO639LANGNAME "ar"
  LOCALE_SLANGUAGE "Arabic (Jordan)"
  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-JO"
  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"
}
