/*
 * Locale definitions for Divehi
 *
 * 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_DIVEHI, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0100\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "6"
  LOCALE_ICENTURY "0"
  LOCALE_ICOUNTRY "960"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "0"
  LOCALE_IDEFAULTCODEPAGE "1"
  LOCALE_IDEFAULTCOUNTRY "960"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0465"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0465"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "10"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "6"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 "މކ"
  LOCALE_S2359 "މފ"
  LOCALE_SABBREVCTRYNAME "MDV"
  LOCALE_SABBREVDAYNAME1 "ހޯމަ"
  LOCALE_SABBREVDAYNAME2 "އަންގާރަ"
  LOCALE_SABBREVDAYNAME3 "ބުދަ"
  LOCALE_SABBREVDAYNAME4 "ބުރާސްފަތި"
  LOCALE_SABBREVDAYNAME5 "ހުކުރު"
  LOCALE_SABBREVDAYNAME6 "ހޮނިހިރު"
  LOCALE_SABBREVDAYNAME7 "އާދީއްތަ"
  LOCALE_SABBREVLANGNAME "DIV"
  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 "Maldives"
  LOCALE_SCURRENCY "ރ."
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "ހޯމަދުވަސް"
  LOCALE_SDAYNAME2 "އަންގާރަދުވަސް"
  LOCALE_SDAYNAME3 "ބުދަދުވަސް"
  LOCALE_SDAYNAME4 "ބުރާސްފަތިދުވަސް"
  LOCALE_SDAYNAME5 "ހުކުރުދުވަސް"
  LOCALE_SDAYNAME6 "ހޮނިހިރުދުވަސް"
  LOCALE_SDAYNAME7 "އާދީއްތަދުވަސް"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Maldives"
  LOCALE_SENGCURRNAME "Rufiyaa"
  LOCALE_SENGLANGUAGE "Divehi"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "MVR"
  LOCALE_SISO3166CTRYNAME "MV"
  LOCALE_SISO639LANGNAME "dv"
  LOCALE_SLANGUAGE "Divehi"
  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 "dv-MV"
  LOCALE_SNATIVECTRYNAME "ދިވެހި ރާއްޖެ"
  LOCALE_SNATIVECURRNAME "ރުފިޔާ"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "ދިވެހިބަސް (ދިވެހި ރާއްޖެ)"
  LOCALE_SNATIVELANGNAME "ދިވެހިބަސް"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Thaa;"
  LOCALE_SSHORTDATE "dd/MM/yy"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm"
  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"
}
