/*
 * Locale definitions for Belarusian
 *
 * 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_BELARUSIAN, 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 "375"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "375"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0423"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "1251"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0423"
  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 "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "BLR"
  LOCALE_SABBREVDAYNAME1 "пн"
  LOCALE_SABBREVDAYNAME2 "аў"
  LOCALE_SABBREVDAYNAME3 "ср"
  LOCALE_SABBREVDAYNAME4 "чц"
  LOCALE_SABBREVDAYNAME5 "пт"
  LOCALE_SABBREVDAYNAME6 "сб"
  LOCALE_SABBREVDAYNAME7 "нд"
  LOCALE_SABBREVLANGNAME "BEL"
  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 "Belarus"
  LOCALE_SCURRENCY "руб."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "панядзелак"
  LOCALE_SDAYNAME2 "аўторак"
  LOCALE_SDAYNAME3 "серада"
  LOCALE_SDAYNAME4 "чацвер"
  LOCALE_SDAYNAME5 "пятніца"
  LOCALE_SDAYNAME6 "субота"
  LOCALE_SDAYNAME7 "нядзеля"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Belarus"
  LOCALE_SENGCURRNAME "Belarusian Ruble"
  LOCALE_SENGLANGUAGE "Belarusian"
  LOCALE_SGROUPING "3;3"
  LOCALE_SINTLSYMBOL "BYR"
  LOCALE_SISO3166CTRYNAME "BY"
  LOCALE_SISO639LANGNAME "be"
  LOCALE_SLANGUAGE "Belarusian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;3"
  LOCALE_SMONTHNAME1 "Студзень\0студзеня"
  LOCALE_SMONTHNAME2 "Люты\0лютага"
  LOCALE_SMONTHNAME3 "Сакавік\0сакавіка"
  LOCALE_SMONTHNAME4 "Красавік\0красавіка"
  LOCALE_SMONTHNAME5 "Май\0мая"
  LOCALE_SMONTHNAME6 "Чэрвень\0чэрвеня"
  LOCALE_SMONTHNAME7 "Ліпень\0ліпеня"
  LOCALE_SMONTHNAME8 "Жнівень\0жніўня"
  LOCALE_SMONTHNAME9 "Верасень\0верасня"
  LOCALE_SMONTHNAME10 "Кастрычнік\0кастрычніка"
  LOCALE_SMONTHNAME11 "Лістапад\0лістапада"
  LOCALE_SMONTHNAME12 "Снежань\0снежня"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "be-BY"
  LOCALE_SNATIVECTRYNAME "Беларусь"
  LOCALE_SNATIVECURRNAME "рубель"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Беларуская (Беларусь)"
  LOCALE_SNATIVELANGNAME "Беларуская"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "BEL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "dd.MM.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"
}
