/*
 * Locale definitions for Polish
 *
 * 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_POLISH, 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 "48"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "48"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "0415"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0415"
  LOCALE_ILDATE "1"
  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 "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "POL"
  LOCALE_SABBREVDAYNAME1 "Pn"
  LOCALE_SABBREVDAYNAME2 "Wt"
  LOCALE_SABBREVDAYNAME3 "śr"
  LOCALE_SABBREVDAYNAME4 "Cz"
  LOCALE_SABBREVDAYNAME5 "Pt"
  LOCALE_SABBREVDAYNAME6 "So"
  LOCALE_SABBREVDAYNAME7 "N"
  LOCALE_SABBREVLANGNAME "PLK"
  LOCALE_SABBREVMONTHNAME1 "sty"
  LOCALE_SABBREVMONTHNAME2 "lut"
  LOCALE_SABBREVMONTHNAME3 "mar"
  LOCALE_SABBREVMONTHNAME4 "kwi"
  LOCALE_SABBREVMONTHNAME5 "maj"
  LOCALE_SABBREVMONTHNAME6 "cze"
  LOCALE_SABBREVMONTHNAME7 "lip"
  LOCALE_SABBREVMONTHNAME8 "sie"
  LOCALE_SABBREVMONTHNAME9 "wrz"
  LOCALE_SABBREVMONTHNAME10 "paź"
  LOCALE_SABBREVMONTHNAME11 "lis"
  LOCALE_SABBREVMONTHNAME12 "gru"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Poland"
  LOCALE_SCURRENCY "zł"
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "poniedziałek"
  LOCALE_SDAYNAME2 "wtorek"
  LOCALE_SDAYNAME3 "środa"
  LOCALE_SDAYNAME4 "czwartek"
  LOCALE_SDAYNAME5 "piątek"
  LOCALE_SDAYNAME6 "sobota"
  LOCALE_SDAYNAME7 "niedziela"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Poland"
  LOCALE_SENGCURRNAME "Polish Zloty"
  LOCALE_SENGLANGUAGE "Polish"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "PLN"
  LOCALE_SISO3166CTRYNAME "PL"
  LOCALE_SISO639LANGNAME "pl"
  LOCALE_SLANGUAGE "Polish"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "styczeń\0stycznia"
  LOCALE_SMONTHNAME2 "luty\0lutego"
  LOCALE_SMONTHNAME3 "marzec\0marca"
  LOCALE_SMONTHNAME4 "kwiecień\0kwietnia"
  LOCALE_SMONTHNAME5 "maj\0maja"
  LOCALE_SMONTHNAME6 "czerwiec\0czerwca"
  LOCALE_SMONTHNAME7 "lipiec\0lipca"
  LOCALE_SMONTHNAME8 "sierpień\0sierpnia"
  LOCALE_SMONTHNAME9 "wrzesień\0września"
  LOCALE_SMONTHNAME10 "październik\0października"
  LOCALE_SMONTHNAME11 "listopad\0listopada"
  LOCALE_SMONTHNAME12 "grudzień\0grudnia"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "pl-PL"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Polska"
  LOCALE_SNATIVECURRNAME "Złoty"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "polski (Polska)"
  LOCALE_SNATIVELANGNAME "polski"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "PLK "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "yyyy-MM-dd"
  LOCALE_SSHORTESTDAYNAME1 "Pn"
  LOCALE_SSHORTESTDAYNAME2 "Wt"
  LOCALE_SSHORTESTDAYNAME3 "Śr"
  LOCALE_SSHORTESTDAYNAME4 "Cz"
  LOCALE_SSHORTESTDAYNAME5 "Pt"
  LOCALE_SSHORTESTDAYNAME6 "So"
  LOCALE_SSHORTESTDAYNAME7 "N"
  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 "Europa zachodnia i Stany Zjednoczone"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Europa centralna"
  LGRPID_BALTIC+LGRPID_RES_BASE "Bałtyckie"
  LGRPID_GREEK+LGRPID_RES_BASE "Grecki"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrylica"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turecki"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japoński"
  LGRPID_KOREAN+LGRPID_RES_BASE "Koreański"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Chiński tradycyjny"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Chiński uproszczony"
  LGRPID_THAI+LGRPID_RES_BASE "Tajski"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrajski"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabski"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Wietnamski"
  LGRPID_INDIC+LGRPID_RES_BASE "Indyjski"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Gruziński"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armeński"
}
