/*
 * Locale definitions for Slovak
 *
 * 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_SLOVAK, 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 "421"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "421"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "041b"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "041b"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  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 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "SVK"
  LOCALE_SABBREVDAYNAME1 "po"
  LOCALE_SABBREVDAYNAME2 "ut"
  LOCALE_SABBREVDAYNAME3 "st"
  LOCALE_SABBREVDAYNAME4 "št"
  LOCALE_SABBREVDAYNAME5 "pi"
  LOCALE_SABBREVDAYNAME6 "so"
  LOCALE_SABBREVDAYNAME7 "ne"
  LOCALE_SABBREVLANGNAME "SKY"
  LOCALE_SABBREVMONTHNAME1 "I"
  LOCALE_SABBREVMONTHNAME2 "II"
  LOCALE_SABBREVMONTHNAME3 "III"
  LOCALE_SABBREVMONTHNAME4 "IV"
  LOCALE_SABBREVMONTHNAME5 "V"
  LOCALE_SABBREVMONTHNAME6 "VI"
  LOCALE_SABBREVMONTHNAME7 "VII"
  LOCALE_SABBREVMONTHNAME8 "VIII"
  LOCALE_SABBREVMONTHNAME9 "IX"
  LOCALE_SABBREVMONTHNAME10 "X"
  LOCALE_SABBREVMONTHNAME11 "XI"
  LOCALE_SABBREVMONTHNAME12 "XII"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Slovakia"
  LOCALE_SCURRENCY "Sk"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "pondelok"
  LOCALE_SDAYNAME2 "utorok"
  LOCALE_SDAYNAME3 "streda"
  LOCALE_SDAYNAME4 "štvrtok"
  LOCALE_SDAYNAME5 "piatok"
  LOCALE_SDAYNAME6 "sobota"
  LOCALE_SDAYNAME7 "nedeľa"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Slovakia"
  LOCALE_SENGCURRNAME "Slovak Koruna"
  LOCALE_SENGLANGUAGE "Slovak"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "SKK"
  LOCALE_SISO3166CTRYNAME "SK"
  LOCALE_SISO639LANGNAME "sk"
  LOCALE_SLANGUAGE "Slovak"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "január"
  LOCALE_SMONTHNAME2 "február"
  LOCALE_SMONTHNAME3 "marec"
  LOCALE_SMONTHNAME4 "apríl"
  LOCALE_SMONTHNAME5 "máj"
  LOCALE_SMONTHNAME6 "jún"
  LOCALE_SMONTHNAME7 "júl"
  LOCALE_SMONTHNAME8 "august"
  LOCALE_SMONTHNAME9 "september"
  LOCALE_SMONTHNAME10 "október"
  LOCALE_SMONTHNAME11 "november"
  LOCALE_SMONTHNAME12 "december"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "sk-SK"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Slovenská republika"
  LOCALE_SNATIVECURRNAME "Slovenská koruna"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "slovenčina (Slovenská republika)"
  LOCALE_SNATIVELANGNAME "slovenčina"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "SKY "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "d. M. yyyy"
  LOCALE_SSHORTESTDAYNAME1 "po"
  LOCALE_SSHORTESTDAYNAME2 "ut"
  LOCALE_SSHORTESTDAYNAME3 "st"
  LOCALE_SSHORTESTDAYNAME4 "št"
  LOCALE_SSHORTESTDAYNAME5 "pi"
  LOCALE_SSHORTESTDAYNAME6 "so"
  LOCALE_SSHORTESTDAYNAME7 "ne"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND " "
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  LOCALE_SYEARMONTH "MMMM yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Západná Európa a Spojené štáty"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Stredoeurópske jazyky"
  LGRPID_BALTIC+LGRPID_RES_BASE "Pobaltské jazyky"
  LGRPID_GREEK+LGRPID_RES_BASE "Gréčtina"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrilika"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turecké jazyky"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japončina"
  LGRPID_KOREAN+LGRPID_RES_BASE "Kórejčina"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Čínština (tradičná)"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Čínština (zjednodušená)"
  LGRPID_THAI+LGRPID_RES_BASE "Thajčina"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrejčina"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabské jazyky"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamčina"
  LGRPID_INDIC+LGRPID_RES_BASE "Indické jazyky"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Gruzínčina"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Arménčina"
}
