/*
 * Locale definitions for Hungarian
 *
 * 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_HUNGARIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0027\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0400\x0012\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "36"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "36"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "040e"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "040e"
  LOCALE_ILDATE "2"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "de."
  LOCALE_S2359 "du."
  LOCALE_SABBREVCTRYNAME "HUN"
  LOCALE_SABBREVDAYNAME1 "H"
  LOCALE_SABBREVDAYNAME2 "K"
  LOCALE_SABBREVDAYNAME3 "Sze"
  LOCALE_SABBREVDAYNAME4 "Cs"
  LOCALE_SABBREVDAYNAME5 "P"
  LOCALE_SABBREVDAYNAME6 "Szo"
  LOCALE_SABBREVDAYNAME7 "V"
  LOCALE_SABBREVLANGNAME "HUN"
  LOCALE_SABBREVMONTHNAME1 "jan."
  LOCALE_SABBREVMONTHNAME2 "febr."
  LOCALE_SABBREVMONTHNAME3 "márc."
  LOCALE_SABBREVMONTHNAME4 "ápr."
  LOCALE_SABBREVMONTHNAME5 "máj."
  LOCALE_SABBREVMONTHNAME6 "jún."
  LOCALE_SABBREVMONTHNAME7 "júl."
  LOCALE_SABBREVMONTHNAME8 "aug."
  LOCALE_SABBREVMONTHNAME9 "szept."
  LOCALE_SABBREVMONTHNAME10 "okt."
  LOCALE_SABBREVMONTHNAME11 "nov."
  LOCALE_SABBREVMONTHNAME12 "dec."
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Hungary"
  LOCALE_SCURRENCY "Ft"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "hétfő"
  LOCALE_SDAYNAME2 "kedd"
  LOCALE_SDAYNAME3 "szerda"
  LOCALE_SDAYNAME4 "csütörtök"
  LOCALE_SDAYNAME5 "péntek"
  LOCALE_SDAYNAME6 "szombat"
  LOCALE_SDAYNAME7 "vasárnap"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Hungary"
  LOCALE_SENGCURRNAME "Hungarian Forint"
  LOCALE_SENGLANGUAGE "Hungarian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "HUF"
  LOCALE_SISO3166CTRYNAME "HU"
  LOCALE_SISO639LANGNAME "hu"
  LOCALE_SLANGUAGE "Hungarian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "yyyy. MMMM d."
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "január"
  LOCALE_SMONTHNAME2 "február"
  LOCALE_SMONTHNAME3 "március"
  LOCALE_SMONTHNAME4 "április"
  LOCALE_SMONTHNAME5 "május"
  LOCALE_SMONTHNAME6 "június"
  LOCALE_SMONTHNAME7 "július"
  LOCALE_SMONTHNAME8 "augusztus"
  LOCALE_SMONTHNAME9 "szeptember"
  LOCALE_SMONTHNAME10 "október"
  LOCALE_SMONTHNAME11 "november"
  LOCALE_SMONTHNAME12 "december"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "hu-HU"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Magyarország"
  LOCALE_SNATIVECURRNAME "Forint"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Magyar (Magyarország)"
  LOCALE_SNATIVELANGNAME "Magyar"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "HUN "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "yyyy. MM. dd."
  LOCALE_SSHORTESTDAYNAME1 "H"
  LOCALE_SSHORTESTDAYNAME2 "K"
  LOCALE_SSHORTESTDAYNAME3 "Sze"
  LOCALE_SSHORTESTDAYNAME4 "Cs"
  LOCALE_SSHORTESTDAYNAME5 "P"
  LOCALE_SSHORTESTDAYNAME6 "Szo"
  LOCALE_SSHORTESTDAYNAME7 "V"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND " "
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  LOCALE_SYEARMONTH "yyyy. MMMM"

  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"
}
