/*
 * Locale definitions for Norwegian (Bokmål)
 *
 * Copyright 2002 Alexandre Julliard for CodeWeavers
 * Copyright 2006 Alexander N. Sørnes <alex@thehandofagony.com>
 *
 * 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)

STRINGTABLE LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "47"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "47"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20277"
  LOCALE_IDEFAULTLANGUAGE "0414"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0414"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "12"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "NOR"
  LOCALE_SABBREVDAYNAME1 "ma"
  LOCALE_SABBREVDAYNAME2 "ti"
  LOCALE_SABBREVDAYNAME3 "on"
  LOCALE_SABBREVDAYNAME4 "to"
  LOCALE_SABBREVDAYNAME5 "fr"
  LOCALE_SABBREVDAYNAME6 "lø"
  LOCALE_SABBREVDAYNAME7 "sø"
  LOCALE_SABBREVLANGNAME "NOR"
  LOCALE_SABBREVMONTHNAME1 "jan"
  LOCALE_SABBREVMONTHNAME2 "feb"
  LOCALE_SABBREVMONTHNAME3 "mar"
  LOCALE_SABBREVMONTHNAME4 "apr"
  LOCALE_SABBREVMONTHNAME5 "mai"
  LOCALE_SABBREVMONTHNAME6 "jun"
  LOCALE_SABBREVMONTHNAME7 "jul"
  LOCALE_SABBREVMONTHNAME8 "aug"
  LOCALE_SABBREVMONTHNAME9 "sep"
  LOCALE_SABBREVMONTHNAME10 "okt"
  LOCALE_SABBREVMONTHNAME11 "nov"
  LOCALE_SABBREVMONTHNAME12 "des"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Norway"
  LOCALE_SCURRENCY "kr"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "mandag"
  LOCALE_SDAYNAME2 "tirsdag"
  LOCALE_SDAYNAME3 "onsdag"
  LOCALE_SDAYNAME4 "torsdag"
  LOCALE_SDAYNAME5 "fredag"
  LOCALE_SDAYNAME6 "lørdag"
  LOCALE_SDAYNAME7 "søndag"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Norway"
  LOCALE_SENGCURRNAME "Norwegian Krone"
  LOCALE_SENGLANGUAGE "Norwegian (Bokmål)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "NOK"
  LOCALE_SISO3166CTRYNAME "NO"
  LOCALE_SISO639LANGNAME "nb"
  LOCALE_SLANGUAGE "Norwegian (Bokmal)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "januar"
  LOCALE_SMONTHNAME2 "februar"
  LOCALE_SMONTHNAME3 "mars"
  LOCALE_SMONTHNAME4 "april"
  LOCALE_SMONTHNAME5 "mai"
  LOCALE_SMONTHNAME6 "juni"
  LOCALE_SMONTHNAME7 "juli"
  LOCALE_SMONTHNAME8 "august"
  LOCALE_SMONTHNAME9 "september"
  LOCALE_SMONTHNAME10 "oktober"
  LOCALE_SMONTHNAME11 "november"
  LOCALE_SMONTHNAME12 "desember"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "nb-NO"
  LOCALE_SNATIVECTRYNAME "Norge"
  LOCALE_SNATIVECURRNAME "Norsk krone"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "norsk (bokmål)"
  LOCALE_SNATIVELANGNAME "norsk (bokmål)"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "NOR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "ma"
  LOCALE_SSHORTESTDAYNAME2 "ti"
  LOCALE_SSHORTESTDAYNAME3 "on"
  LOCALE_SSHORTESTDAYNAME4 "to"
  LOCALE_SSHORTESTDAYNAME5 "fr"
  LOCALE_SSHORTESTDAYNAME6 "lø"
  LOCALE_SSHORTESTDAYNAME7 "sø"
  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 "Vest-Europa og USA"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Sentral-Europa"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltisk"
  LGRPID_GREEK+LGRPID_RES_BASE "Gresk"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Kyrillisk"
  LGRPID_TURKISH+LGRPID_RES_BASE "Tyrkisk"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japansk"
  LGRPID_KOREAN+LGRPID_RES_BASE "Koreansk"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Kinesisk (tradisjonell)"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Kinesisk (forenklet)"
  LGRPID_THAI+LGRPID_RES_BASE "Thailandsk"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebraisk"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabisk"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamesisk"
  LGRPID_INDIC+LGRPID_RES_BASE "Indisk"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgisk"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armensk"
}
