/*
 * Locale definitions for Serbian (Cyrillic)
 *
 * 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_SERBIAN_CYRILLIC
{
  LOCALE_FONTSIGNATURE L"\x0203\x8000\x3848\x0000\x0000\x0000\x0000\x0000\x0004\x0000\x0000\x0002\x0004\x0000\x0000\x0202"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "381"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "855"
  LOCALE_IDEFAULTCOUNTRY "381"
  LOCALE_IDEFAULTEBCDICCODEPAGE "21025"
  LOCALE_IDEFAULTLANGUAGE "0c1a"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0c1a"
  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 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "SPB"
  LOCALE_SABBREVDAYNAME1 "пон"
  LOCALE_SABBREVDAYNAME2 "уто"
  LOCALE_SABBREVDAYNAME3 "сре"
  LOCALE_SABBREVDAYNAME4 "чет"
  LOCALE_SABBREVDAYNAME5 "пет"
  LOCALE_SABBREVDAYNAME6 "суб"
  LOCALE_SABBREVDAYNAME7 "нед"
  LOCALE_SABBREVLANGNAME "SRB"
  LOCALE_SABBREVMONTHNAME1 "јан"
  LOCALE_SABBREVMONTHNAME2 "феб"
  LOCALE_SABBREVMONTHNAME3 "мар"
  LOCALE_SABBREVMONTHNAME4 "апр"
  LOCALE_SABBREVMONTHNAME5 "мај"
  LOCALE_SABBREVMONTHNAME6 "јун"
  LOCALE_SABBREVMONTHNAME7 "јул"
  LOCALE_SABBREVMONTHNAME8 "авг"
  LOCALE_SABBREVMONTHNAME9 "сеп"
  LOCALE_SABBREVMONTHNAME10 "окт"
  LOCALE_SABBREVMONTHNAME11 "нов"
  LOCALE_SABBREVMONTHNAME12 "дец"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Serbia"
  LOCALE_SCURRENCY "Дин."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "понедељак"
  LOCALE_SDAYNAME2 "уторак"
  LOCALE_SDAYNAME3 "среда"
  LOCALE_SDAYNAME4 "четвртак"
  LOCALE_SDAYNAME5 "петак"
  LOCALE_SDAYNAME6 "субота"
  LOCALE_SDAYNAME7 "недеља"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Serbia"
  LOCALE_SENGCURRNAME "Serbian Dinar"
  LOCALE_SENGLANGUAGE "Serbian (Cyrillic)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "RSD"
  LOCALE_SISO3166CTRYNAME "RS"
  LOCALE_SISO639LANGNAME "sr"
  LOCALE_SLANGUAGE "Serbian (Cyrillic)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "јануар"
  LOCALE_SMONTHNAME2 "фебруар"
  LOCALE_SMONTHNAME3 "март"
  LOCALE_SMONTHNAME4 "април"
  LOCALE_SMONTHNAME5 "мај"
  LOCALE_SMONTHNAME6 "јун"
  LOCALE_SMONTHNAME7 "јул"
  LOCALE_SMONTHNAME8 "август"
  LOCALE_SMONTHNAME9 "септембар"
  LOCALE_SMONTHNAME10 "октобар"
  LOCALE_SMONTHNAME11 "новембар"
  LOCALE_SMONTHNAME12 "децембар"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "sr-RS"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Југославија"
  LOCALE_SNATIVECURRNAME "динар"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "српски (Југославија)"
  LOCALE_SNATIVELANGNAME "српски"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "SRB "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "d.M.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "по"
  LOCALE_SSHORTESTDAYNAME2 "ут"
  LOCALE_SSHORTESTDAYNAME3 "ср"
  LOCALE_SSHORTESTDAYNAME4 "че"
  LOCALE_SSHORTESTDAYNAME5 "пе"
  LOCALE_SSHORTESTDAYNAME6 "су"
  LOCALE_SSHORTESTDAYNAME7 "не"
  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"
}
