/*
 * Locale definitions for Bulgarian
 *
 * 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_BULGARIAN, SUBLANG_DEFAULT
{
  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 "359"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "359"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20420"
  LOCALE_IDEFAULTLANGUAGE "0402"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "1251"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0402"
  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 "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "BGR"
  LOCALE_SABBREVDAYNAME1 "понеделник"
  LOCALE_SABBREVDAYNAME2 "вторник"
  LOCALE_SABBREVDAYNAME3 "сряда"
  LOCALE_SABBREVDAYNAME4 "четвъртък"
  LOCALE_SABBREVDAYNAME5 "петък"
  LOCALE_SABBREVDAYNAME6 "събота"
  LOCALE_SABBREVDAYNAME7 "неделя"
  LOCALE_SABBREVLANGNAME "BGR"
  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 "Bulgaria"
  LOCALE_SCURRENCY "лв"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "понеделник"
  LOCALE_SDAYNAME2 "вторник"
  LOCALE_SDAYNAME3 "сряда"
  LOCALE_SDAYNAME4 "четвъртък"
  LOCALE_SDAYNAME5 "петък"
  LOCALE_SDAYNAME6 "събота"
  LOCALE_SDAYNAME7 "неделя"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Bulgaria"
  LOCALE_SENGCURRNAME "Bulgarian Lev"
  LOCALE_SENGLANGUAGE "Bulgarian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "BGL"
  LOCALE_SISO3166CTRYNAME "BG"
  LOCALE_SISO639LANGNAME "bg"
  LOCALE_SLANGUAGE "Bulgarian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dd 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 "bg-BG"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "България"
  LOCALE_SNATIVECURRNAME "лв."
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "български (България)"
  LOCALE_SNATIVELANGNAME "български"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "BGR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "dd.M.yyyy 'г.'"
  LOCALE_SSHORTESTDAYNAME1 "пн"
  LOCALE_SSHORTESTDAYNAME2 "вт"
  LOCALE_SSHORTESTDAYNAME3 "ср"
  LOCALE_SSHORTESTDAYNAME4 "чт"
  LOCALE_SSHORTESTDAYNAME5 "пт"
  LOCALE_SSHORTESTDAYNAME6 "сб"
  LOCALE_SSHORTESTDAYNAME7 "нд"
  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 "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"
}
