/*
 * 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_SNAN "NaN"
  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"
}
