/*
 * 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_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "ދިވެހި ރާއްޖެ"
  LOCALE_SNATIVECURRNAME "ރުފިޔާ"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "ދިވެހިބަސް (ދިވެހި ރާއްޖެ)"
  LOCALE_SNATIVELANGNAME "ދިވެހިބަސް"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "DIV "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Thaa;"
  LOCALE_SSHORTDATE "dd/MM/yy"
  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"
  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"
}
