/*
 * Locale definitions for Mongolian (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_MONGOLIAN, 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 "0"
  LOCALE_ICOUNTRY "976"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "1"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "976"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "450"
  LOCALE_IDEFAULTMACCODEPAGE "10007"
  LOCALE_IDEFAULTUNIXCODEPAGE "28595"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "0"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0450"
  LOCALE_ILDATE "2"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "5"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "3"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "MNG"
  LOCALE_SABBREVDAYNAME1 "Да"
  LOCALE_SABBREVDAYNAME2 "Мя"
  LOCALE_SABBREVDAYNAME3 "Лх"
  LOCALE_SABBREVDAYNAME4 L"\x041f\x04af"
  LOCALE_SABBREVDAYNAME5 "Ба"
  LOCALE_SABBREVDAYNAME6 "Бя"
  LOCALE_SABBREVDAYNAME7 "Ня"
  LOCALE_SABBREVLANGNAME "MON"
  LOCALE_SABBREVMONTHNAME1 "I"
  LOCALE_SABBREVMONTHNAME2 "II"
  LOCALE_SABBREVMONTHNAME3 "III"
  LOCALE_SABBREVMONTHNAME4 "IV"
  LOCALE_SABBREVMONTHNAME5 "V"
  LOCALE_SABBREVMONTHNAME6 "VI"
  LOCALE_SABBREVMONTHNAME7 "VII"
  LOCALE_SABBREVMONTHNAME8 "VШ"
  LOCALE_SABBREVMONTHNAME9 "IX"
  LOCALE_SABBREVMONTHNAME10 "X"
  LOCALE_SABBREVMONTHNAME11 "XI"
  LOCALE_SABBREVMONTHNAME12 "XII"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Mongolia"
  LOCALE_SCURRENCY L"\x20ae"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "Даваа"
  LOCALE_SDAYNAME2 "Мягмар"
  LOCALE_SDAYNAME3 "Лхагва"
  LOCALE_SDAYNAME4 L"\x041f\x04af\x0440\x044d\x0432"
  LOCALE_SDAYNAME5 "Баасан"
  LOCALE_SDAYNAME6 "Бямба"
  LOCALE_SDAYNAME7 "Ням"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Mongolia"
  LOCALE_SENGCURRNAME "Tugrik"
  LOCALE_SENGLANGUAGE "Mongolian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "MNT"
  LOCALE_SISO3166CTRYNAME "MN"
  LOCALE_SISO639LANGNAME "mn"
  LOCALE_SLANGUAGE "Mongolian (Cyrillic)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "yyyy 'оны' MMMM d"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 L"1\x00a0\x0434\x04af\x0433\x044d\x044d\x0440\x00a0\x0441\x0430\x0440"
  LOCALE_SMONTHNAME2 "2 дугаар сар"
  LOCALE_SMONTHNAME3 "3 дугаар сар"
  LOCALE_SMONTHNAME4 L"4\x00a0\x0434\x04af\x0433\x044d\x044d\x0440\x00a0\x0441\x0430\x0440"
  LOCALE_SMONTHNAME5 "5 дугаар сар"
  LOCALE_SMONTHNAME6 "6 дугаар сар"
  LOCALE_SMONTHNAME7 "7 дугаар сар"
  LOCALE_SMONTHNAME8 "8 дугаар сар"
  LOCALE_SMONTHNAME9 L"9\x00a0\x0434\x04af\x0433\x044d\x044d\x0440\x00a0\x0441\x0430\x0440"
  LOCALE_SMONTHNAME10 "10 дугаар сар"
  LOCALE_SMONTHNAME11 L"11\x00a0\x0434\x04af\x0433\x044d\x044d\x0440\x00a0\x0441\x0430\x0440"
  LOCALE_SMONTHNAME12 "12 дугаар сар"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "mn-MN"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Монгол улс"
  LOCALE_SNATIVECURRNAME L"\x0422\x04e9\x0433\x0440\x04e9\x0433"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Монгол хэл (Монгол улс)"
  LOCALE_SNATIVELANGNAME "Монгол хэл"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "MNG "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "yy.MM.dd"
  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 "yyyy 'он' MMMM"

  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"
}
