/*
 * 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_IOPTIONALCALENDAR "6"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "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_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"
}
