/*
 * 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 "2"
  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 "6"
  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_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"
}
