/*
 * Locale definitions for Czech
 *
 * 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_CZECH, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0027\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0400\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "420"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "420"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0405"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0405"
  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 "dop."
  LOCALE_S2359 "odp."
  LOCALE_SABBREVCTRYNAME "CZE"
  LOCALE_SABBREVDAYNAME1 "po"
  LOCALE_SABBREVDAYNAME2 "út"
  LOCALE_SABBREVDAYNAME3 "st"
  LOCALE_SABBREVDAYNAME4 "čt"
  LOCALE_SABBREVDAYNAME5 "pá"
  LOCALE_SABBREVDAYNAME6 "so"
  LOCALE_SABBREVDAYNAME7 "ne"
  LOCALE_SABBREVLANGNAME "CSY"
  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 "Czech Republic"
  LOCALE_SCURRENCY "Kč"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "pondělí"
  LOCALE_SDAYNAME2 "úterý"
  LOCALE_SDAYNAME3 "středa"
  LOCALE_SDAYNAME4 "čtvrtek"
  LOCALE_SDAYNAME5 "pátek"
  LOCALE_SDAYNAME6 "sobota"
  LOCALE_SDAYNAME7 "neděle"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Czech Republic"
  LOCALE_SENGCURRNAME "Czech Koruna"
  LOCALE_SENGLANGUAGE "Czech"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "CZK"
  LOCALE_SISO3166CTRYNAME "CZ"
  LOCALE_SISO639LANGNAME "cs"
  LOCALE_SLANGUAGE "Czech"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "leden\0ledna"
  LOCALE_SMONTHNAME2 "únor\0února"
  LOCALE_SMONTHNAME3 "březen\0března"
  LOCALE_SMONTHNAME4 "duben\0dubna"
  LOCALE_SMONTHNAME5 "květen\0května"
  LOCALE_SMONTHNAME6 "červen\0června"
  LOCALE_SMONTHNAME7 "červenec\0července"
  LOCALE_SMONTHNAME8 "srpen\0srpna"
  LOCALE_SMONTHNAME9 "září\0září"
  LOCALE_SMONTHNAME10 "říjen\0října"
  LOCALE_SMONTHNAME11 "listopad\0listopadu"
  LOCALE_SMONTHNAME12 "prosinec\0prosince"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "cs-CZ"
  LOCALE_SNATIVECTRYNAME "Česká republika"
  LOCALE_SNATIVECURRNAME "Koruna Česká"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "čeština (Česká republika)"
  LOCALE_SNATIVELANGNAME "čeština"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "CSY "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "d.M.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "po"
  LOCALE_SSHORTESTDAYNAME2 "út"
  LOCALE_SSHORTESTDAYNAME3 "st"
  LOCALE_SSHORTESTDAYNAME4 "čt"
  LOCALE_SSHORTESTDAYNAME5 "pá"
  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í Evropa a Spojené státy"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Středoevropské jazyky"
  LGRPID_BALTIC+LGRPID_RES_BASE "Pobaltské jazyky"
  LGRPID_GREEK+LGRPID_RES_BASE "Řečtina"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrilice"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turecké jazyky"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japonština"
  LGRPID_KOREAN+LGRPID_RES_BASE "Korejština"
  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ština"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrejština"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabské jazyky"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamština"
  LGRPID_INDIC+LGRPID_RES_BASE "Indické jazyky"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Gruzínština"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Arménština"
}
