/*
 * Swedish resources for Program Manager
 *
 * Copyright 2009 Anders Jonsson
 *
 * 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)

#include "progman.h"

/* Menu */

MAIN_MENU MENU LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
{
 POPUP "&Arkiv" {
   MENUITEM "&Ny...",              PM_NEW
   MENUITEM "Ö&ppna\tEnter",             PM_OPEN
   MENUITEM "&Flytta...\tF7",             PM_MOVE,      GRAYED
   MENUITEM "&Kopiera...\tF8",             PM_COPY,      GRAYED
   MENUITEM "&Ta bort\tEntf",           PM_DELETE
   MENUITEM "&Attribut...\tAlt+Enter",       PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "K&ör...",          PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "A&vsluta Windows...",             PM_EXIT
 }
 POPUP "&Inställningar" {
   MENUITEM "Ordna &automatiskt",  PM_AUTO_ARRANGE
   MENUITEM "&Minimera vid start",    PM_MIN_ON_RUN
   MENUITEM "Spara ändringar vid &stängning", PM_SAVE_SETTINGS
 }
 POPUP "&Fönster" {
   MENUITEM "&Överlappande\tShift+F5",       PM_OVERLAP
   MENUITEM "&Sida vid sida\tShift+F4",  PM_SIDE_BY_SIDE
   MENUITEM "Ordna &ikoner",       PM_ARRANGE
 }

POPUP "&Hjälp" {
   MENUITEM "&Innehåll",         PM_CONTENTS
   MENUITEM "&Sök...",           PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "&Hjälp om hjälp",     PM_HELPONHELP
   MENUITEM "&Guide",         PM_TUTORIAL
   MENUITEM SEPARATOR

   POPUP "&Information..." {
     MENUITEM "&Licens",        PM_LICENSE
     MENUITEM "I&NGEN GARANTI",    PM_NO_WARRANTY
     MENUITEM "&om Wine",     PM_ABOUT_WINE
   }
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ny"
{
RADIOBUTTON   "",                 PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "Program&grupp",   -1,    20, 18,  80, 15
RADIOBUTTON   "",                 PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         "&Program", -1,  20, 38,  80, 15
DEFPUSHBUTTON "OK",          IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",        PM_HELP,        105, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Move' */

DIALOG_MOVE DIALOG 0, 0, 250, 65
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Flytta program"
{
LTEXT         "Flytta program:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Från grupp:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Till grupp:",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "OK",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Copy' */

DIALOG_COPY DIALOG 0, 0, 250, 65
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Kopiera program"
{
LTEXT         "Kopiera program:",    -1,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "Från grupp:", -1,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "&Till grupp:",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "OK",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Group attributes' */

DIALOG_GROUP DIALOG 0, 0, 230, 65
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Programgruppsattribut"
{
LTEXT     "&Beskrivning:", PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                            PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     "&Gruppfil:",        PM_FILE_TXT,          05, 38,  50, 10
EDITTEXT                            PM_FILE,              60, 38,  90, 15, WS_TABSTOP
DEFPUSHBUTTON "OK",            IDOK,                155,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",        IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",          PM_HELP,             155, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Program attributes' */

DIALOG_PROGRAM DIALOG 0, 0, 250, 105
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Programattribut"
{
LTEXT         "&Beskrivning:",  PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                   PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "&Kommandorad:", PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                                   PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "&Arbetskatalog:",    PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                   PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "&Tangentkombination:",      PM_HOT_KEY_TXT,       05, 55,  60, 10
EDITTEXT                                   PM_HOT_KEY,           80, 55,  90, 15, WS_TABSTOP
ICON          "",                          PM_ICON,              20, 70
CHECKBOX      "",                          PM_SYMBOL,            80, 75,  10, 10, WS_TABSTOP
LTEXT         "&Minimera vid start",       -1,             95, 75,  75, 10
DEFPUSHBUTTON "OK",                   IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",               IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "B&läddra...",               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "Ändra &ikon...", PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",                 PM_HELP,             185, 85,  60, 15, WS_TABSTOP
}

/* Dialog `Symbol' */

DIALOG_SYMBOL DIALOG 0, 0, 200, 85
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ändra ikon"
{
LTEXT     "&Filnamn:",    PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                         PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "Aktuell &ikon:", PM_SYMBOL_LIST_TXT,  5, 30, 125, 10
COMBOBOX                         PM_SYMBOL_LIST,      5, 40, 125, 50,
   CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_OWNERDRAWFIXED | WS_TABSTOP
DEFPUSHBUTTON "OK",         IDOK,              135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",     IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "B&läddra...",    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",       PM_HELP,           135, 65,  60, 15, WS_TABSTOP
}

/* Dialog `Execute' */

DIALOG_EXECUTE DIALOG 0, 0, 200, 85
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Kör program"
{
LTEXT     "&Kommandorad:", -1,   05, 15, 120, 10
EDITTEXT                               PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                      PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "&Minimera vid start",   -1,   20, 45, 120, 10
DEFPUSHBUTTON "OK",               IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "Avbryt",           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "B&läddra...",          PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "&Hjälp",             PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
{
IDS_PROGRAM_MANAGER,		"Programhanteraren"
IDS_ERROR,			"FEL"
IDS_WARNING,			"VARNING"
IDS_INFO,			"Information"
IDS_DELETE,			"Ta bort"
IDS_DELETE_GROUP_s,		"Ta bort gruppen '%s'?"
IDS_DELETE_PROGRAM_s,		"Ta bort programmet '%s'?"
IDS_NOT_IMPLEMENTED,		"Ej implementerat"
IDS_FILE_READ_ERROR_s,		"Fel vid läsning av '%s'."
IDS_FILE_WRITE_ERROR_s,		"Fel vid skrivning til '%s'."
IDS_GRPFILE_READ_ERROR_s,	"\
Kunde inte öppna gruppfilen '%s'.\n\
Ska vidare försök göras?"
IDS_OUT_OF_MEMORY,		"För lite minne."
IDS_WINHELP_ERROR,		"Ingen hjälp finns tillgänglig."
IDS_UNKNOWN_FEATURE_s,		"Okänd egenskap i '%s'"
IDS_FILE_NOT_OVERWRITTEN_s,	"Filen '%s' fanns redan, och skrevs ej över."
IDS_SAVE_GROUP_AS_s,		"Spara grupp som '%s' för å undvika att skriva över filer."
IDS_NO_HOT_KEY,			"Ingen"
IDS_ALL_FILES,			"Alla filer (*.*)"
IDS_PROGRAMS,			"Program"
IDS_LIBRARIES_DLL,		"Bibliotek (*.dll)"
IDS_SYMBOL_FILES,		"Ikonfiler"
IDS_SYMBOLS_ICO,		"Ikoner (*.ico)"
}

STRINGTABLE DISCARDABLE LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
{
IDS_LICENSE_CAPTION,            "LICENS"
IDS_LICENSE,
"Detta program är fri programvara. Du kan distribuera det och/eller modifiera \
det under villkoren i GNU Lesser General Public License, publicerad \
av Free Software Foundation, antingen version 2.1 eller (om du så vill) \
någon senare version. Detta program distribueras i hopp om att det ska \
vara användbart,men UTAN NÅGON SOM HELST GARANTI, även utan \
underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT \
SPECIELLT ÄNDAMÅL. Se GNU Lesser General Public License för ytterligare \
information.\
Du bör ha fått en kopia av GNU Lesser General Public License tillsammans \
med detta program. Om inte, skriv till Free Software Foundation, \
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."

IDS_WARRANTY_CAPTION, "INGEN GARANTI"
IDS_WARRANTY,
"Detta program distribueras i hopp om att det ska \
vara användbart,men UTAN NÅGON SOM HELST GARANTI, även utan \
underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT \
SPECIELLT ÄNDAMÅL. Se GNU Lesser General Public License för ytterligare \
information."
}
