/*
 * 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ń"
  LOCALE_SMONTHNAME2 "luty"
  LOCALE_SMONTHNAME3 "marzec"
  LOCALE_SMONTHNAME4 "kwiecień"
  LOCALE_SMONTHNAME5 "maj"
  LOCALE_SMONTHNAME6 "czerwiec"
  LOCALE_SMONTHNAME7 "lipiec"
  LOCALE_SMONTHNAME8 "sierpień"
  LOCALE_SMONTHNAME9 "wrzesień"
  LOCALE_SMONTHNAME10 "październik"
  LOCALE_SMONTHNAME11 "listopad"
  LOCALE_SMONTHNAME12 "grudzień"
  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"
}
