/*
 * 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"
        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 "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."
}
