# translation of watchdog.po to swedish
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Martin Bagge <brother@bsnet.se>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: watchdog\n"
"Report-Msgid-Bugs-To: meskes@debian.org\n"
"POT-Creation-Date: 2007-07-16 08:48+0200\n"
"PO-Revision-Date: 2008-11-02 05:27+0100\n"
"Last-Translator: Martin Bagge <brother@bsnet.se>\n"
"Language-Team: swedish <debian-l10n-swedish@lists.debian.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"

#. Type: boolean
#. Description
#: ../templates:2001
msgid "Start watchdog at boot time?"
msgstr "Ska watchdog startas vid systemets uppstart?"

#. Type: boolean
#. Description
#: ../templates:2001
msgid ""
"Please specify whether watchdog should be started as part of the boot "
"process. This can be changed later by editing /etc/default/watchdog."
msgstr ""
"Ange om watchdog ska startas vid systemets uppstart. Detta kan ändras senare "
"genom att redigera /etc/default/watchdog."

#. Type: boolean
#. Description
#: ../templates:3001
msgid "Restart watchdog on upgrades?"
msgstr "Ska watchdog startas om vid uppgraderingar?"

#. Type: boolean
#. Description
#: ../templates:3001
msgid ""
"If the kernel is configured with the CONFIG_WATCHDOG_NOWAYOUT option (which "
"is not the default setting), restarting watchdog will cause a spurious "
"reboot (the kernel will assume that the watchdog daemon crashed)."
msgstr ""
"Om kärnan har alternativet CONFIG_WATCHDOG_NOWAYOUT aktiverat (vilket inte "
"är standard) så kan en omstart av watchdog initera en oönskad omstart av "
"systemet (eftersom kärnan i så fall kan anta att watchdog-tjönsten "
"kraschade)."

#. Type: string
#. Description
#: ../templates:4001
msgid "Watchdog module to preload:"
msgstr "Watchdog-moduler som ska förladdas:"

#. Type: string
#. Description
#: ../templates:4001
msgid ""
"Please choose which watchdog module should be preloaded before starting "
"watchdog. The 'softdog' module should be suited for all installations. Enter "
"'none' if you don't want the script to load a module."
msgstr ""
"Ange vilka watchdog-moduler som ska förladdas innan watchdog startas. "
"Modulen 'softdog' passar de flesta installationerna. Ange 'none' om du inte "
"vill att skriptet ska ladda någon modul."
