/*
 * 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_SNAN "NaN"
  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 "ארמני"
}
