/*
 * Locale definitions for Croatian
 *
 * 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_SERBIAN, 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 "385"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "385"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "041a"
  LOCALE_IDEFAULTMACCODEPAGE "10082"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "041a"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "2"
  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 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "HRV"
  LOCALE_SABBREVDAYNAME1 "pon"
  LOCALE_SABBREVDAYNAME2 "uto"
  LOCALE_SABBREVDAYNAME3 "sri"
  LOCALE_SABBREVDAYNAME4 "čet"
  LOCALE_SABBREVDAYNAME5 "pet"
  LOCALE_SABBREVDAYNAME6 "sub"
  LOCALE_SABBREVDAYNAME7 "ned"
  LOCALE_SABBREVLANGNAME "HRV"
  LOCALE_SABBREVMONTHNAME1 "sij"
  LOCALE_SABBREVMONTHNAME2 "vlj"
  LOCALE_SABBREVMONTHNAME3 "ožu"
  LOCALE_SABBREVMONTHNAME4 "tra"
  LOCALE_SABBREVMONTHNAME5 "svi"
  LOCALE_SABBREVMONTHNAME6 "lip"
  LOCALE_SABBREVMONTHNAME7 "srp"
  LOCALE_SABBREVMONTHNAME8 "kol"
  LOCALE_SABBREVMONTHNAME9 "ruj"
  LOCALE_SABBREVMONTHNAME10 "lis"
  LOCALE_SABBREVMONTHNAME11 "stu"
  LOCALE_SABBREVMONTHNAME12 "pro"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Croatia"
  LOCALE_SCURRENCY "kn"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "ponedjeljak"
  LOCALE_SDAYNAME2 "utorak"
  LOCALE_SDAYNAME3 "srijeda"
  LOCALE_SDAYNAME4 "četvrtak"
  LOCALE_SDAYNAME5 "petak"
  LOCALE_SDAYNAME6 "subota"
  LOCALE_SDAYNAME7 "nedjelja"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Croatia"
  LOCALE_SENGCURRNAME "Croatian Kuna"
  LOCALE_SENGLANGUAGE "Croatian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "HRK"
  LOCALE_SISO3166CTRYNAME "HR"
  LOCALE_SISO639LANGNAME "hr"
  LOCALE_SLANGUAGE "Croatian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "siječanj\0siječnja"
  LOCALE_SMONTHNAME2 "veljača\0veljače"
  LOCALE_SMONTHNAME3 "ožujak\0ožujka"
  LOCALE_SMONTHNAME4 "travanj\0travnja"
  LOCALE_SMONTHNAME5 "svibanj\0svibnja"
  LOCALE_SMONTHNAME6 "lipanj\0lipnja"
  LOCALE_SMONTHNAME7 "srpanj\0srpnja"
  LOCALE_SMONTHNAME8 "kolovoz\0kolovoza"
  LOCALE_SMONTHNAME9 "rujan\0rujna"
  LOCALE_SMONTHNAME10 "listopad\0listopada"
  LOCALE_SMONTHNAME11 "studeni\0studenog"
  LOCALE_SMONTHNAME12 "prosinac\0prosinca"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "hr-HR"
  LOCALE_SNATIVECTRYNAME "Hrvatska"
  LOCALE_SNATIVECURRNAME "hrvatska kuna"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "hrvatski (Hrvatska)"
  LOCALE_SNATIVELANGNAME "hrvatski"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "HRV "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "d.M.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "po"
  LOCALE_SSHORTESTDAYNAME2 "ut"
  LOCALE_SSHORTESTDAYNAME3 "sr"
  LOCALE_SSHORTESTDAYNAME4 "če"
  LOCALE_SSHORTESTDAYNAME5 "pe"
  LOCALE_SSHORTESTDAYNAME6 "su"
  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 "Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE "Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE "Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE "Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabic"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE "Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armenian"
}
