#-------------------------------------------------------------------------------
# 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.


