/*
 * 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_SNAN "NaN"
  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"
}
