/*
 * Locale definitions for Persian
 *
 * 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_PERSIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x60af\x8000\x3848\x1000\x0008\x0000\x0000\x0800\x0040\x0000\x0000\x2000\x0040\x0000\x0000\x2008"
  LOCALE_ICALENDARTYPE "12"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "981"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1256"
  LOCALE_IDEFAULTCODEPAGE "720"
  LOCALE_IDEFAULTCOUNTRY "981"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20420"
  LOCALE_IDEFAULTLANGUAGE "0429"
  LOCALE_IDEFAULTMACCODEPAGE "10004"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "5"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0429"
  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 "2"
  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 "IRN"
  LOCALE_SABBREVDAYNAME1 "دوشنبه"
  LOCALE_SABBREVDAYNAME2 "سه‌شنبه"
  LOCALE_SABBREVDAYNAME3 "چهارشنبه"
  LOCALE_SABBREVDAYNAME4 "پنج‌شنبه"
  LOCALE_SABBREVDAYNAME5 "جمعه"
  LOCALE_SABBREVDAYNAME6 "شنبه"
  LOCALE_SABBREVDAYNAME7 "یک‌شنبه"
  LOCALE_SABBREVLANGNAME "FAR"
  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 "Iran"
  LOCALE_SCURRENCY "ریال"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "دوشنبه"
  LOCALE_SDAYNAME2 "سه‌شنبه"
  LOCALE_SDAYNAME3 "چهارشنبه"
  LOCALE_SDAYNAME4 "پنج‌شنبه"
  LOCALE_SDAYNAME5 "جمعه"
  LOCALE_SDAYNAME6 "شنبه"
  LOCALE_SDAYNAME7 "یک‌شنبه"
  LOCALE_SDECIMAL "٫"
  LOCALE_SENGCOUNTRY "Iran"
  LOCALE_SENGCURRNAME "Iranian Rial"
  LOCALE_SENGLANGUAGE "Persian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "IRR"
  LOCALE_SISO3166CTRYNAME "IR"
  LOCALE_SISO639LANGNAME "fa"
  LOCALE_SLANGUAGE "Persian (Iran)"
  LOCALE_SLIST "؛"
  LOCALE_SLONGDATE "yyyy/MM/dd"
  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 "fa-IR"
  LOCALE_SNAN "ناعدد"
  LOCALE_SNATIVECTRYNAME "ایران"
  LOCALE_SNATIVECURRNAME "ریال"
  LOCALE_SNATIVEDIGITS "۰۱۲۳۴۵۶۷۸۹"
  LOCALE_SNATIVEDISPLAYNAME "فارسی (ایران)"
  LOCALE_SNATIVELANGNAME "فارسی"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "FAR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Arab;"
  LOCALE_SSHORTDATE "yyyy/MM/dd"
  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 "yyyy/MM"

  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"
}
