/*
 * Locale definitions for Icelandic
 *
 * 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_ICELANDIC, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0003\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "354"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "354"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20871"
  LOCALE_IDEFAULTLANGUAGE "040f"
  LOCALE_IDEFAULTMACCODEPAGE "10079"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "040f"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "ISL"
  LOCALE_SABBREVDAYNAME1 "mán."
  LOCALE_SABBREVDAYNAME2 "þri."
  LOCALE_SABBREVDAYNAME3 "mið."
  LOCALE_SABBREVDAYNAME4 "fim."
  LOCALE_SABBREVDAYNAME5 "fös."
  LOCALE_SABBREVDAYNAME6 "lau."
  LOCALE_SABBREVDAYNAME7 "sun."
  LOCALE_SABBREVLANGNAME "ISL"
  LOCALE_SABBREVMONTHNAME1 "jan."
  LOCALE_SABBREVMONTHNAME2 "feb."
  LOCALE_SABBREVMONTHNAME3 "mar."
  LOCALE_SABBREVMONTHNAME4 "apr."
  LOCALE_SABBREVMONTHNAME5 "maí"
  LOCALE_SABBREVMONTHNAME6 "jún."
  LOCALE_SABBREVMONTHNAME7 "júl."
  LOCALE_SABBREVMONTHNAME8 "ágú."
  LOCALE_SABBREVMONTHNAME9 "sep."
  LOCALE_SABBREVMONTHNAME10 "okt."
  LOCALE_SABBREVMONTHNAME11 "nóv."
  LOCALE_SABBREVMONTHNAME12 "des."
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Iceland"
  LOCALE_SCURRENCY "kr."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "mánudagur"
  LOCALE_SDAYNAME2 "þriðjudagur"
  LOCALE_SDAYNAME3 "miðvikudagur"
  LOCALE_SDAYNAME4 "fimmtudagur"
  LOCALE_SDAYNAME5 "föstudagur"
  LOCALE_SDAYNAME6 "laugardagur"
  LOCALE_SDAYNAME7 "sunnudagur"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Iceland"
  LOCALE_SENGCURRNAME "Icelandic Krona"
  LOCALE_SENGLANGUAGE "Icelandic"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "ISK"
  LOCALE_SISO3166CTRYNAME "IS"
  LOCALE_SISO639LANGNAME "is"
  LOCALE_SLANGUAGE "Icelandic"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "janúar"
  LOCALE_SMONTHNAME2 "febrúar"
  LOCALE_SMONTHNAME3 "mars"
  LOCALE_SMONTHNAME4 "apríl"
  LOCALE_SMONTHNAME5 "maí"
  LOCALE_SMONTHNAME6 "júní"
  LOCALE_SMONTHNAME7 "júlí"
  LOCALE_SMONTHNAME8 "ágúst"
  LOCALE_SMONTHNAME9 "september"
  LOCALE_SMONTHNAME10 "október"
  LOCALE_SMONTHNAME11 "nóvember"
  LOCALE_SMONTHNAME12 "desember"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "is-IS"
  LOCALE_SNATIVECTRYNAME "Ísland"
  LOCALE_SNATIVECURRNAME "Króna"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "íslenska (Ísland)"
  LOCALE_SNATIVELANGNAME "íslenska"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ISL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "d.M.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "má"
  LOCALE_SSHORTESTDAYNAME2 "þr"
  LOCALE_SSHORTESTDAYNAME3 "mi"
  LOCALE_SSHORTESTDAYNAME4 "fi"
  LOCALE_SSHORTESTDAYNAME5 "fö"
  LOCALE_SSHORTESTDAYNAME6 "la"
  LOCALE_SSHORTESTDAYNAME7 "su"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  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"
}
