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