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