/*
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#pragma code_page(0) /* Unicode only */

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 L"6"
  LOCALE_ICENTURY L"0"
  LOCALE_ICOUNTRY L"960"
  LOCALE_ICURRDIGITS L"2"
  LOCALE_ICURRENCY L"3"
  LOCALE_IDATE L"1"
  LOCALE_IDAYLZERO L"1"
  LOCALE_IDEFAULTANSICODEPAGE L"0"
  LOCALE_IDEFAULTCODEPAGE L"1"
  LOCALE_IDEFAULTCOUNTRY L"960"
  LOCALE_IDEFAULTEBCDICCODEPAGE L"500"
  LOCALE_IDEFAULTLANGUAGE L"0465"
  LOCALE_IDEFAULTMACCODEPAGE L"2"
  LOCALE_IDEFAULTUNIXCODEPAGE L"65001"
  LOCALE_IDIGITS L"2"
  LOCALE_IDIGITSUBSTITUTION L"1"
  LOCALE_IFIRSTDAYOFWEEK L"6"
  LOCALE_IFIRSTWEEKOFYEAR L"0"
  LOCALE_IINTLCURRDIGITS L"2"
  LOCALE_ILANGUAGE L"0465"
  LOCALE_ILDATE L"1"
  LOCALE_ILZERO L"1"
  LOCALE_IMEASURE L"0"
  LOCALE_IMONLZERO L"1"
  LOCALE_INEGCURR L"10"
  LOCALE_INEGNUMBER L"1"
  LOCALE_INEGSEPBYSPACE L"1"
  LOCALE_INEGSIGNPOSN L"4"
  LOCALE_INEGSYMPRECEDES L"0"
  LOCALE_IOPTIONALCALENDAR L"6"
  LOCALE_IPAPERSIZE L"9"
  LOCALE_IPOSSEPBYSPACE L"1"
  LOCALE_IPOSSIGNPOSN L"4"
  LOCALE_IPOSSYMPRECEDES L"0"
  LOCALE_ITIME L"1"
  LOCALE_ITIMEMARKPOSN L"0"
  LOCALE_ITLZERO L"1"
  LOCALE_S1159 L"\x0789\x0786"
  LOCALE_S2359 L"\x0789\x078a"
  LOCALE_SABBREVCTRYNAME L"MDV"
  LOCALE_SABBREVDAYNAME1 L"\x0780\x07af\x0789\x07a6"
  LOCALE_SABBREVDAYNAME2 L"\x0787\x07a6\x0782\x07b0\x078e\x07a7\x0783\x07a6"
  LOCALE_SABBREVDAYNAME3 L"\x0784\x07aa\x078b\x07a6"
  LOCALE_SABBREVDAYNAME4 L"\x0784\x07aa\x0783\x07a7\x0790\x07b0\x078a\x07a6\x078c\x07a8"
  LOCALE_SABBREVDAYNAME5 L"\x0780\x07aa\x0786\x07aa\x0783\x07aa"
  LOCALE_SABBREVDAYNAME6 L"\x0780\x07ae\x0782\x07a8\x0780\x07a8\x0783\x07aa"
  LOCALE_SABBREVDAYNAME7 L"\x0787\x07a7\x078b\x07a9\x0787\x07b0\x078c\x07a6"
  LOCALE_SABBREVLANGNAME L"DIV"
  LOCALE_SABBREVMONTHNAME1 L"\x0796\x07ac\x0782\x07aa\x0787\x07a6\x0783\x07a9"
  LOCALE_SABBREVMONTHNAME2 L"\x078a\x07ac\x0784\x07aa\x0783\x07aa\x0787\x07a6\x0783\x07a9"
  LOCALE_SABBREVMONTHNAME3 L"\x0789\x07a7\x0797\x07b0"
  LOCALE_SABBREVMONTHNAME4 L"\x0787\x07ac\x0795\x07b0\x0783\x07a8\x078d\x07b0"
  LOCALE_SABBREVMONTHNAME5 L"\x0789\x07ad\x0787\x07a8"
  LOCALE_SABBREVMONTHNAME6 L"\x0796\x07ab\x0782\x07b0"
  LOCALE_SABBREVMONTHNAME7 L"\x0796\x07ab\x078d\x07a7\x0787\x07a8"
  LOCALE_SABBREVMONTHNAME8 L"\x0787\x07af\x078e\x07a6\x0790\x07b0\x0793\x07b0"
  LOCALE_SABBREVMONTHNAME9 L"\x0790\x07ac\x0795\x07b0\x0793\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SABBREVMONTHNAME10 L"\x0787\x07ae\x0786\x07b0\x0793\x07af\x0784\x07a6\x0783\x07aa"
  LOCALE_SABBREVMONTHNAME11 L"\x0782\x07ae\x0788\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SABBREVMONTHNAME12 L"\x0791\x07a8\x0790\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SABBREVMONTHNAME13 L""
  LOCALE_SCOUNTRY L"Maldives"
  LOCALE_SCURRENCY L"\x0783."
  LOCALE_SDATE L"/"
  LOCALE_SDAYNAME1 L"\x0780\x07af\x0789\x07a6\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME2 L"\x0787\x07a6\x0782\x07b0\x078e\x07a7\x0783\x07a6\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME3 L"\x0784\x07aa\x078b\x07a6\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME4 L"\x0784\x07aa\x0783\x07a7\x0790\x07b0\x078a\x07a6\x078c\x07a8\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME5 L"\x0780\x07aa\x0786\x07aa\x0783\x07aa\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME6 L"\x0780\x07ae\x0782\x07a8\x0780\x07a8\x0783\x07aa\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDAYNAME7 L"\x0787\x07a7\x078b\x07a9\x0787\x07b0\x078c\x07a6\x078b\x07aa\x0788\x07a6\x0790\x07b0"
  LOCALE_SDECIMAL L"."
  LOCALE_SENGCOUNTRY L"Maldives"
  LOCALE_SENGCURRNAME L"Rufiyaa"
  LOCALE_SENGLANGUAGE L"Divehi"
  LOCALE_SGROUPING L"3;0"
  LOCALE_SINTLSYMBOL L"MVR"
  LOCALE_SISO3166CTRYNAME L"MV"
  LOCALE_SISO639LANGNAME L"div"
  LOCALE_SLANGUAGE L"Divehi"
  LOCALE_SLIST L"\x060c"
  LOCALE_SLONGDATE L"dd MMMM yyyy"
  LOCALE_SMONDECIMALSEP L"."
  LOCALE_SMONGROUPING L"3;0"
  LOCALE_SMONTHNAME1 L"\x0796\x07ac\x0782\x07aa\x0787\x07a6\x0783\x07a9"
  LOCALE_SMONTHNAME2 L"\x078a\x07ac\x0784\x07aa\x0783\x07aa\x0787\x07a6\x0783\x07a9"
  LOCALE_SMONTHNAME3 L"\x0789\x07a7\x0797\x07b0"
  LOCALE_SMONTHNAME4 L"\x0787\x07ac\x0795\x07b0\x0783\x07a8\x078d\x07b0"
  LOCALE_SMONTHNAME5 L"\x0789\x07ad\x0787\x07a8"
  LOCALE_SMONTHNAME6 L"\x0796\x07ab\x0782\x07b0"
  LOCALE_SMONTHNAME7 L"\x0796\x07ab\x078d\x07a7\x0787\x07a8"
  LOCALE_SMONTHNAME8 L"\x0787\x07af\x078e\x07a6\x0790\x07b0\x0793\x07b0"
  LOCALE_SMONTHNAME9 L"\x0790\x07ac\x0795\x07b0\x0793\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SMONTHNAME10 L"\x0787\x07ae\x0786\x07b0\x0793\x07af\x0784\x07a6\x0783\x07aa"
  LOCALE_SMONTHNAME11 L"\x0782\x07ae\x0788\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SMONTHNAME12 L"\x0791\x07a8\x0790\x07ac\x0789\x07b0\x0784\x07a6\x0783\x07aa"
  LOCALE_SMONTHNAME13 L""
  LOCALE_SMONTHOUSANDSEP L","
  LOCALE_SNATIVECTRYNAME L"\x078b\x07a8\x0788\x07ac\x0780\x07a8 \x0783\x07a7\x0787\x07b0\x0796\x07ac"
  LOCALE_SNATIVECURRNAME L"\x0783\x07aa\x078a\x07a8\x0794\x07a7"
  LOCALE_SNATIVEDIGITS L"0123456789"
  LOCALE_SNATIVELANGNAME L"\x078b\x07a8\x0788\x07ac\x0780\x07a8\x0784\x07a6\x0790\x07b0"
  LOCALE_SNEGATIVESIGN L"-"
  LOCALE_SPOSITIVESIGN L""
  LOCALE_SSHORTDATE L"dd/MM/yy"
  LOCALE_SSORTNAME L"Default"
  LOCALE_STHOUSAND L","
  LOCALE_STIME L":"
  LOCALE_STIMEFORMAT L"HH:mm"
  LOCALE_SYEARMONTH L"MMMM, yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE L"Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE L"Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE L"Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE L"Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE L"Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE L"Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE L"Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE L"Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE L"Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE L"Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE L"Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE L"Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE L"Arabic" 
  LGRPID_VIETNAMESE+LGRPID_RES_BASE L"Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE L"Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE L"Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE L"Armenian"
}
