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