#
# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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 General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# This file stores localized messages for the Xerces
# SAX implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#
# @version $Id: SAXMessages_sv.properties /st_wptg_1.8.0.0.0jdk/2 2013/05/29 00:46:23 gmolloy Exp $


BadMessageKey = Hittar inte felmeddelandet som motsvarar meddelandenyckeln.
FormatFailed = Ett internt fel intr\u00E4ffade vid formatering av f\u00F6ljande meddelande:\n

# JAXP messages
schema-not-supported = Angivet schemaspr\u00E5k st\u00F6ds inte.
jaxp-order-not-supported = Egenskapen ''{0}'' m\u00E5ste anges f\u00F6re inst\u00E4llning av egenskapen ''{1}''. 
schema-already-specified = Egenskapen ''{0}'' kan inte anges om ett Schema-objekt som \u00E4r icke-null redan har angetts.

# feature messages
feature-not-supported = Funktionen ''{0}'' st\u00F6ds inte.
feature-not-recognized = Funktionen ''{0}'' \u00E4r ok\u00E4nd.
true-not-supported = True-status f\u00F6r funktionen ''{0}'' st\u00F6ds inte.
false-not-supported = False-status f\u00F6r funktionen ''{0}'' st\u00F6ds inte.
feature-read-only = Funktionen ''{0}'' \u00E4r skrivskyddad.
jaxp-secureprocessing-feature = FEATURE_SECURE_PROCESSING: Funktionen kan inte anges till false om s\u00E4kerhetshanteraren anv\u00E4nds.

# property messages
property-not-supported = Egenskapen ''{0}'' st\u00F6ds inte.
property-not-recognized = Egenskapen ''{0}'' \u00E4r ok\u00E4nd.
property-read-only = Egenskapen ''{0}'' \u00E4r skrivskyddad.
property-not-parsing-supported = Egenskapen ''{0}'' st\u00F6ds inte vid tolkning.
dom-node-read-not-supported = Kan inte l\u00E4sa egenskap f\u00F6r DOM-nod. Det finns inget DOM-tr\u00E4d.
incompatible-class = V\u00E4rdet angivet f\u00F6r egenskapen ''{0}'' kan inte omvandlas till {1}.

start-document-not-called=Egenskapen "{0}" b\u00F6r anropas efter startDocument-h\u00E4ndelsen utl\u00F6ses
nullparameter=namnparametern f\u00F6r "{0}" \u00E4r null
errorHandlerNotSet=Varning: valideringen startades, men det fanns ingen angiven org.xml.sax.ErrorHandler. Parser anv\u00E4nder ErrorHandler av standardtyp vid utskrift av de f\u00F6rsta {0} felen. Korrigera felet genom anrop av setErrorHandler-metoden.
errorHandlerDebugMsg=Fel: URI = "{0}", Rad = "{1}", : {2} 
