/*
 * Locale definitions for Hebrew
 *
 * Copyright 2002 Alexandre Julliard for CodeWeavers
 * Copyright 2003 Shachar Shemesh
 *
 * 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_HEBREW, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x18ab\x8000\x38cb\x1000\x0000\x0000\x0000\x0800\x0020\x0000\x0000\x0020\x0020\x0000\x0000\x0020"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "972"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1255"
  LOCALE_IDEFAULTCODEPAGE "862"
  LOCALE_IDEFAULTCOUNTRY "972"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "040d"
  LOCALE_IDEFAULTMACCODEPAGE "10005"
  LOCALE_IDEFAULTUNIXCODEPAGE "28598"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "040d"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "0"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "2"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "8"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "1"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "AM"
  LOCALE_S2359 "PM"
  LOCALE_SABBREVCTRYNAME "ISR"
  LOCALE_SABBREVDAYNAME1 "ב"
  LOCALE_SABBREVDAYNAME2 "ג"
  LOCALE_SABBREVDAYNAME3 "ד"
  LOCALE_SABBREVDAYNAME4 "ה"
  LOCALE_SABBREVDAYNAME5 "ו"
  LOCALE_SABBREVDAYNAME6 "ש"
  LOCALE_SABBREVDAYNAME7 "א"
  LOCALE_SABBREVLANGNAME "HEB"
  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 "Israel"
  LOCALE_SCURRENCY "₪"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "יום שני"
  LOCALE_SDAYNAME2 "יום שלישי"
  LOCALE_SDAYNAME3 "יום רביעי"
  LOCALE_SDAYNAME4 "יום חמישי"
  LOCALE_SDAYNAME5 "יום שישי"
  LOCALE_SDAYNAME6 "שבת"
  LOCALE_SDAYNAME7 "יום ראשון"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Israel"
  LOCALE_SENGCURRNAME "Israeli New Shekel"
  LOCALE_SENGLANGUAGE "Hebrew"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "ILS"
  LOCALE_SISO3166CTRYNAME "IL"
  LOCALE_SISO639LANGNAME "he"
  LOCALE_SLANGUAGE "Hebrew"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dddd ה־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 "he-IL"
  LOCALE_SNATIVECTRYNAME "ישראל"
  LOCALE_SNATIVECURRNAME "שקל חדש"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "עברית (ישראל)"
  LOCALE_SNATIVELANGNAME "עברית"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "IWR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hebr;"
  LOCALE_SSHORTDATE "dd/MM/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "ב"
  LOCALE_SSHORTESTDAYNAME2 "ג"
  LOCALE_SSHORTESTDAYNAME3 "ד"
  LOCALE_SSHORTESTDAYNAME4 "ה"
  LOCALE_SSHORTESTDAYNAME5 "ו"
  LOCALE_SSHORTESTDAYNAME6 "ש"
  LOCALE_SSHORTESTDAYNAME7 "א"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  LOCALE_SYEARMONTH "MMMM yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "מערב אירופאי וארצות הברית"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "מרכז אירופאי"
  LGRPID_BALTIC+LGRPID_RES_BASE "בלטי"
  LGRPID_GREEK+LGRPID_RES_BASE "יווני"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "קירילי"
  LGRPID_TURKISH+LGRPID_RES_BASE "טורקי"
  LGRPID_JAPANESE+LGRPID_RES_BASE "יפני"
  LGRPID_KOREAN+LGRPID_RES_BASE "קוריאני"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "סיני מסורתי"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "סיני מפושט"
  LGRPID_THAI+LGRPID_RES_BASE "תאילנדי"
  LGRPID_HEBREW+LGRPID_RES_BASE "עברי"
  LGRPID_ARABIC+LGRPID_RES_BASE "ערבי"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "וייטנמי"
  LGRPID_INDIC+LGRPID_RES_BASE "הינדי"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "גאורגי"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "ארמני"
}
