# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM Corporation - initial implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range:
#

# Export XML Wizard
exportXMLWizard_title=Eksport\u00e9r XML

# Select Export Type Wizard Page
selectExportTypePage_desc=V\u00e6lg den type metodebiblioteksindhold, der skal eksporteres.
exportLibraryRadioButton_text=Eksport\u00e9r hele metodebiblioteket
exportPluginsRadioButton_text=Eksport\u00e9r en eller flere metode-plugins
exportConfigsRadioButton_text=Eksport\u00e9r en metodekonfiguration

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Angiv eksportfil
selectXMLFilePage_desc=Angiv en XML-destinationsfil, hvor det eksporterede metodebiblioteksindhold skal gemmes.
fileLabel_text=XML-fil:
browseButton_text=Gennemse...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' findes allerede.\nVil du overskrive?

# Progress Messages
exportingXML_text=Eksporterer metodebiblioteksindhold til XML-fil...

# Error Messages
invalidXMLFile_error=Den angivne XML-fil er ikke gyldig.
exportXMLWizard_error=IUPM0000E: Eksport er ikke udf\u00f8rt: {0}
exportXMLWizard_reviewLog=Eksport er udf\u00f8rt. Gennemse logfilerne i eksportbiblioteket.
exportXMLService_error=Fejl under eksport af bibliotek: {0}
exportXMLService_feature_error=Fejl under angivelse af funktionsv\u00e6rdi: Element={0}, funktion={1}
xmlLibrary_error_load_xml=Kan ikke indl\u00e6se XML-kilden ''{0}''
xmlLibrary_no_plugin=Ingen metode-plugin for id''en {0}
xmlLibrary_no_feature=Kan ikke hente XML-funktion for {0}_{1}
xmlLibrary_no_class=Kan ikke hente EClass for {0}
xmlLibrary_error_create_element=Fejl under oprettelse af element. Det vides ikke, hvordan v\u00e6rdi for funktionen {0} skal angives.
xmlLibrary_error_set_value=Fejl under oprettelse af element. Kan ikke angive v\u00e6rdien {0} for opbevaringsstedet {1}
xmlLibrary_invalid_feature_value=Ugyldig attributfunktionsv\u00e6rdi for funktionen {0} med v\u00e6rdien {1}
xmlLibrary_error_set_value_2=Fejl under angivelse af attribut. Kan ikke angive v\u00e6rdi for funktion={0}, objekt={1}, v\u00e6rdi={2}
xmlLibrary_error_set_value_3=Det vides ikke, hvordan v\u00e6rdi for funktion={0}, objekt={1}, v\u00e6rdi={2} skal angives.
xmlLibrary_error_set_reference=Fejl under angivelse af reference. Kan ikke angive v\u00e6rdi for funktion={0}, objekt={1}, v\u00e6rdi={2}
xmlLibrary_error_process_wrong_container=Processen ''{0}'' har ikke et gyldigt opbevaringssted. Opbevaringsstedet er af typen ''{1}'', som ikke er en procespakke.
xmlLibrary_new_id=Elementet {0} er tildelt med en ny id, {1}, fordi det ikke har en gyldig.
xmlLibrary_id_not_unique=Element-id''en ''{0}'' bruges af mere end et element.

export_config_to_temp_location=Eksport\u00e9r konfiguration til en midlertidig placering
open_lib_from_temp_exported_location=\u00c5bn bibliotek fra den midlertidige eksportplacering


