/*
 * Copyright 2005-2009 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
 */

#include "shresdef.h"

#pragma code_page(65001)

LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL

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

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
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 DISCARDABLE
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 "&Små 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 LOADONCALL MOVEABLE DISCARDABLE 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 LOADONCALL MOVEABLE DISCARDABLE 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 LOADONCALL MOVEABLE DISCARDABLE 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 LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Skriv inn navnet på programmet, mappen, dokumentet etter Internett-ressursen du ønsker å åpne.", 12289, 36, 11, 182, 18
 LTEXT "&Åpne:", 12305, 7, 39, 24, 10
 CONTROL "", 12298, "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...", 12288, 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"

        /* 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 "Virkelig slette «%1»?"
	IDS_DELETEMULTIPLE_TEXT "Virkelig slette disse %1 elementene?"
	IDS_DELETESELECTED_TEXT "Virkelig slette valgte element(er)??"
	IDS_TRASHITEM_TEXT "Virkelig legge «%1» i papirkurven?"
	IDS_TRASHFOLDER_TEXT "Virkelig legge «%1» og alt innholdet i papirkurven?"
	IDS_TRASHMULTIPLE_TEXT "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 "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
	IDS_OVERWRITEFILE_CAPTION "Bekreft overskriving av fil"
	IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
	    "If the files in the destination folder have the same names as files in the\n"\
	    "selected folder they will be replaced. Do you still want to move or copy\n"\
	    "the folder?"

        /* 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-vinduet (intern feil)"
        IDS_RUNDLG_BROWSE_CAPTION  "Bla"
        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."
}
