/*
 * Copyright 2005-2009 Alexander N. Sørnes <alex@thehandofagony.com>
 * Copyright 2010 Trygve Vea <trygve.vea@gmail.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
 */

#include "shresdef.h"

#pragma code_page(65001)

LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL

MENU_001 MENU
BEGIN
	MENUITEM "&Store ikoner",	FCIDM_SHVIEW_BIGICON
	MENUITEM "S&må ikoner",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Detaljer",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Vis"
	  BEGIN
	    MENUITEM "&Store ikoner",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "S&må ikoner",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Detaljer",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Ordne &ikoner"
	  BEGIN
	    MENUITEM "Etter &navn",	0x30	/* column 0 */
	    MENUITEM "Etter &type",	0x32	/* column 2 */
	    MENUITEM "Etter &størrelse",	0x31	/* ... */
	    MENUITEM "Etter &dato",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "Ordne &automatisk",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Still opp ikoner",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Oppdater",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Lim inn",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Lim inn som snarvei",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Ny"
	  BEGIN
	    MENUITEM "Ny &mappe",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Ny &snarvei",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Egenskaper",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Velg"		FCIDM_SHVIEW_OPEN
	  MENUITEM "&Utforsk",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Åpne",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "Klipp &ut",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopier",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "&Opprett snarvei",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "&Slett",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Gi nytt navn"	FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "Egenska&per",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Fil"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Avslutt", IDM_CPANEL_EXIT
    END

    POPUP "&Vis"
    BEGIN
        MENUITEM "&Store ikoner", FCIDM_SHVIEW_BIGICON
        MENUITEM "S&må ikoner", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Detaljer", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Hjelp"
    BEGIN
        MENUITEM "&Om Kontrollpanel...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Bla etter mappe"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Avbryt", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
 	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Bla etter mappe"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Mappe:", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Ny &mappe", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Avbryt", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Meldings"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Ja", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Ja til &alt", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Nei", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Avbry&t", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Om %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "Lisens...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 170, 10
 LTEXT "Kjører på %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine er laget av", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Skriv inn navnet på programmet, mappen, dokumentet, eller Internett-ressursen du ønsker å åpne.", IDC_RUNDLG_DESCRIPTION, 36, 11, 182, 18
 LTEXT "&Åpne:", IDC_RUNDLG_LABEL, 7, 39, 24, 10
 CONTROL "", IDC_RUNDLG_EDITPATH, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Avbryt", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Bla gjennom...", IDC_RUNDLG_BROWSE, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Fil"
	IDS_SHV_COLUMN2		"Størrelse"
	IDS_SHV_COLUMN3		"Type"
	IDS_SHV_COLUMN4		"Endret"
	IDS_SHV_COLUMN5		"Egenskaper"
	IDS_SHV_COLUMN6		"Størrelse"
	IDS_SHV_COLUMN7		"Ledig plass"
	IDS_SHV_COLUMN8		"Navn"
	IDS_SHV_COLUMN9		"Kommentarer"
	IDS_SHV_COLUMN10	"Eier"
	IDS_SHV_COLUMN11	"Gruppe"
	IDS_SHV_COLUMN_DELFROM	"Opprinnelig plassering"
	IDS_SHV_COLUMN_DELDATE	"Dato slettet"
        IDS_SHV_COL_DOCS        "Dokumenter"
        IDS_SHV_COL_STATUS      "Status"
        IDS_SHV_COL_LOCATION    "Plassering"
        IDS_SHV_COL_MODEL       "Modell"

        /* special folders */
	IDS_DESKTOP		"Skrivebord"
	IDS_MYCOMPUTER		"Min datamaskin"
	IDS_RECYCLEBIN_FOLDER_NAME      "Papirkurv"
	IDS_CONTROLPANEL	"Control Panel"

        /* context menus */
	IDS_VIEW_LARGE		"&Store ikoner"
	IDS_VIEW_SMALL		"S&må ikoner"
	IDS_VIEW_LIST		"&Liste"
	IDS_VIEW_DETAILS	"&Detaljer"
	IDS_SELECT		"Velg"
	IDS_OPEN		"Åpne"

	IDS_CREATEFOLDER_DENIED "Kunne ikke opprette ny mappe: tilgang nektet."
	IDS_CREATEFOLDER_CAPTION "Klarte ikke opprette ny mappe"
	IDS_DELETEITEM_CAPTION "Bekreft filsletting"
	IDS_DELETEFOLDER_CAPTION "Bekreft sletting av mappe"
	IDS_DELETEITEM_TEXT "Vil du virkelig slette «%1»?"
	IDS_DELETEMULTIPLE_TEXT "Vil du virkelig slette disse %1 elementene?"
	IDS_DELETESELECTED_TEXT "Vil du virkelig slette valgte element(er)??"
	IDS_TRASHITEM_TEXT "Vil du virkelig legge «%1» i papirkurven?"
	IDS_TRASHFOLDER_TEXT "Vil du virkelig legge «%1» og alt innholdet i papirkurven?"
	IDS_TRASHMULTIPLE_TEXT "Vil du virkelig legge disse %1 valgte elementene i papirkurven?"
	IDS_CANTTRASH_TEXT "Elementet «%1» kan ikke legges i papirkurven. Vil du slette det i stedet?"
	IDS_OVERWRITEFILE_TEXT "Denne mappen inneholder allerede en fil med navn «%1».\n\nVil du erstatte den?"
	IDS_OVERWRITEFILE_CAPTION "Bekreft overskriving av fil"
	IDS_OVERWRITEFOLDER_TEXT "Denne mappen inneholder allerede en mappe med navn «%1».\n\n"\
	    "Hvis filene i mappen du kopierer til heter det samme som filene i mappen du\n"\
	    "kopierer fra, vil disse bli erstattet. Ønsker du fortsatt å flytte eller kopiere\n"\
	    "denne mappen?"

        /* message box strings */
        IDS_RESTART_TITLE       "Starte på nytt"
        IDS_RESTART_PROMPT      "Vil du simulere en omstart av Windows?"
        IDS_SHUTDOWN_TITLE      "Avslutt"
        IDS_SHUTDOWN_PROMPT     "Vil du avslutte Wine-økten?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Klarte ikke vise Kjør-vinduet (intern feil)"
        IDS_RUNDLG_BROWSE_ERROR    "Klarte ikke vise Bla gjennom-vinduet (intern feil)"
        IDS_RUNDLG_BROWSE_CAPTION  "Bla gjennom"
        IDS_RUNDLG_BROWSE_FILTER   "Programfiler\0*.exe\0Alle filer\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Start-meny\\Programmer"
	IDS_PERSONAL                "Mine dokumenter"
	IDS_FAVORITES               "Favoritter"
	IDS_STARTUP                 "Start-meny\\Programmer\\Oppstart"
	IDS_RECENT                  "Siste"
	IDS_SENDTO                  "SendTo"
	IDS_STARTMENU               "Start-meny"
	IDS_MYMUSIC                 "Min musikk"
	IDS_MYVIDEO                 "Mine videoklipp"
	IDS_DESKTOPDIRECTORY        "Skrivebord"
	IDS_NETHOOD                 "NetHood"
	IDS_TEMPLATES               "Maler"
	IDS_APPDATA                 "Programdata"
	IDS_PRINTHOOD               "Skrivere"
	IDS_LOCAL_APPDATA           "Lokale innstillinger\\Programdata"
	IDS_INTERNET_CACHE          "Lokale innstillinger\\Temporary Internet Files"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Lokale innstillinger\\Logg"
	IDS_PROGRAM_FILES           "Programfiler"
	IDS_MYPICTURES              "Mine bilder"
	IDS_PROGRAM_FILES_COMMON    "Programfiler\\Fellesfiler"
	IDS_COMMON_DOCUMENTS        "Dokumenter"
	IDS_ADMINTOOLS              "Start-meny\\Programmer\\Administrative verktøy"
	IDS_COMMON_MUSIC            "Dokumenter\\Min musikk"
	IDS_COMMON_PICTURES         "Dokumenter\\Mine bilder"
	IDS_COMMON_VIDEO            "Dokumenter\\Mine videoklipp"
	IDS_CDBURN_AREA             "Lokale innstillinger\\Programdata\\Microsoft\\CD Burning"

	IDS_NEWFOLDER		"Ny mappe"

	IDS_CPANEL_TITLE            "Wine Kontrollpanel"
	IDS_CPANEL_NAME             "Navn"
	IDS_CPANEL_DESCRIPTION      "Beskrivelse"

	IDS_SHLEXEC_NOASSOC         "Intet Windows-program er satt opp til å åpne denne filtypen."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Lisensbetingelser"
IDS_LICENSE,
"Wine er fri programvare; du kan distribuere det og/eller \
endre det i henhold til vilkårene i «GNU Lesser General Public \
License», utgitt av the Free Software Foundation; enten \
versjon 2.1 av Lisensen, eller (hvis du ønsker det) en nyere versjon.\n\n\
Wine utgis i håp om at det er nyttig, \
men UTEN ENHVER GARANTI; uten engang den antydede garantien om \
HANDELSEGNETHET eller EGNETHET FOR ET SPESIELT FORMÅL.  Se «GNU \
Lesser General Public License» for flere detaljer.\n\n\
Du skal ha mottatt et eksemplar av «GNU Lesser General Public \
License» sammen med dette programmet; hvis ikke, skriv til: the Free Software \
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
}
