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