/*
 * 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_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "1"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "2"
  LOCALE_IPOSSYMPRECEDES "1"
  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_SNATIVELANGNAME "ܣܘܪܝܝܐ"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN "+"
  LOCALE_SSCRIPTS "Syrc;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  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"
}
