/*
 * Locale definitions for FYRO Macedonian
 *
 * 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_MACEDONIAN, 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 "389"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "389"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "042f"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "042f"
  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 "MKD"
  LOCALE_SABBREVDAYNAME1 "пон"
  LOCALE_SABBREVDAYNAME2 "втр"
  LOCALE_SABBREVDAYNAME3 "срд"
  LOCALE_SABBREVDAYNAME4 "чет"
  LOCALE_SABBREVDAYNAME5 "пет"
  LOCALE_SABBREVDAYNAME6 "саб"
  LOCALE_SABBREVDAYNAME7 "нед"
  LOCALE_SABBREVLANGNAME "MKI"
  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 "Former Yugoslav Republic of Macedonia"
  LOCALE_SCURRENCY "ден."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "понеделник"
  LOCALE_SDAYNAME2 "вторник"
  LOCALE_SDAYNAME3 "среда"
  LOCALE_SDAYNAME4 "четврток"
  LOCALE_SDAYNAME5 "петок"
  LOCALE_SDAYNAME6 "сабота"
  LOCALE_SDAYNAME7 "недела"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Former Yugoslav Republic of Macedonia"
  LOCALE_SENGCURRNAME "Macedonian Denar"
  LOCALE_SENGLANGUAGE "FYRO Macedonian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "MKD"
  LOCALE_SISO3166CTRYNAME "MK"
  LOCALE_SISO639LANGNAME "mk"
  LOCALE_SLANGUAGE "FYRO Macedonian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, 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 "mk-MK"
  LOCALE_SNATIVECTRYNAME "Македонија"
  LOCALE_SNATIVECURRNAME "денар"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "македонски јазик (Македонија)"
  LOCALE_SNATIVELANGNAME "македонски јазик"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "MKD "
  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 "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"
}
