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