/*
 * Locale definitions for Syriac
 *
 * 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_SYRIAC, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x60af\x8000\x3848\x1000\x0088\x0000\x0000\x0800\x0040\x0000\x0000\x2000\x0040\x0000\x0000\x2008"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "963"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "0"
  LOCALE_IDEFAULTCODEPAGE "1"
  LOCALE_IDEFAULTCOUNTRY "963"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "045a"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "5"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "045a"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "3"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "2"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "1"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "2"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "ܩ.ܛ"
  LOCALE_S2359 "ܒ.ܛ"
  LOCALE_SABBREVCTRYNAME "SYR"
  LOCALE_SABBREVDAYNAME1 "܏ܒ ܏ܒܫ"
  LOCALE_SABBREVDAYNAME2 "܏ܓ ܏ܒܫ"
  LOCALE_SABBREVDAYNAME3 "܏ܕ ܏ܒܫ"
  LOCALE_SABBREVDAYNAME4 "܏ܗ ܏ܒܫ"
  LOCALE_SABBREVDAYNAME5 "܏ܥܪܘܒ"
  LOCALE_SABBREVDAYNAME6 "܏ܫܒ"
  LOCALE_SABBREVDAYNAME7 "܏ܐ ܏ܒܫ"
  LOCALE_SABBREVLANGNAME "SYR"
  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 "Syria"
  LOCALE_SCURRENCY "ل.س.‏"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "ܬܪܝܢ ܒܫܒܐ"
  LOCALE_SDAYNAME2 "ܬܠܬܐ ܒܫܒܐ"
  LOCALE_SDAYNAME3 "ܐܪܒܥܐ ܒܫܒܐ"
  LOCALE_SDAYNAME4 "ܚܡܫܐ ܒܫܒܐ"
  LOCALE_SDAYNAME5 "ܥܪܘܒܬܐ"
  LOCALE_SDAYNAME6 "ܫܒܬܐ"
  LOCALE_SDAYNAME7 "ܚܕ ܒܫܒܐ"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Syria"
  LOCALE_SENGCURRNAME "Syrian Pound"
  LOCALE_SENGLANGUAGE "Syriac"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "SYP"
  LOCALE_SISO3166CTRYNAME "SY"
  LOCALE_SISO639LANGNAME "syr"
  LOCALE_SLANGUAGE "Syriac"
  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 "syr-SY"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "سوريا"
  LOCALE_SNATIVECURRNAME "جنيه سوري"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "ܣܘܪܝܝܐ (سوريا)"
  LOCALE_SNATIVELANGNAME "ܣܘܪܝܝܐ"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "SYR "
  LOCALE_SPOSITIVESIGN "+"
  LOCALE_SSCRIPTS "Syrc;"
  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"
}
