#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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.


