# 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: IUPE0200E - IUPE0299E
#

# Import Library Configuration Wizard
importConfigWizard_title=Import\u00e9r bibliotekskonfiguration
selectConfigDirWizardPage_title=Angiv importbibliotek
selectConfigDirWizardPage_text=Angiv biblioteket med den bibliotekskonfiguration, der skal importeres.
reviewChangesWizardPage_title=Gennemse biblioteks\u00e6ndringer
reviewChangesWizardPage_text=Gennemse de \u00e6ndringer, der vil blive foretaget i det aktuelle metodebibliotek.
selectConfigSpecsWizardPage_title=V\u00e6lg konfigurationsspecifikationer
selectConfigSpecsWizardPage_text=V\u00e6lg en eller flere konfigurationsspecifikationer, der skal importeres.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Import\u00e9r metode-plugins
selectPluginsDirWizardPage_title=Angiv importbibliotek
selectPluginsDirWizardPage_text=Angiv biblioteket med de metode-plugins, der skal importeres.
selectPluginsWizardPage_title=V\u00e6lg metode-plugins
selectPluginsWizardPage_text=V\u00e6lg en eller flere metode-plugins, der skal importeres. Hvis en valgt plugin allerede findes i det aktuelle metodebibliotek, skal du kontrollere versionsforskellene.
importPluginsWizard_ERR_Import_plugin=Import af plug-in ikke udf\u00f8rt

ConfigurationImportService_MSG0=Validerer valgt bibliotekskonfiguration...
ConfigurationImportService_MSG1=Det angivne bibliotek indeholder ikke en gyldig konfiguration.
ConfigurationImportService_MSG3=Importerer metodekonfiguration...
ConfigurationImportService_MSG2=Kan ikke importere det aktuelt \u00e5bne bibliotek til sig selv.
ImportConfigurationWizard_MSG1=Importerer metodekonfiguration...
ImportConfigurationWizard_ERR_Import_configuration=Import af konfiguration ikke udf\u00f8rt

FileModifyChecker_Checkout_failed_title=Fejl i udtjekning
FileModifyChecker_Checkout_failed_msg=Nogle af filerne er ikke tjekket ud. Vil du pr\u00f8ve igen?

ImportConfigReportPage_title=Importerer konfigurationsrapport
ImportPluginWizard_readonly=IUPE0201E: Bibliotek er skrivebeskyttet.
ImportPluginWizard_MSG1=Importerer metode-plugin...
ImportPluginWizard_error=Fejl
ImportPluginWizard_warn_existing_plugins=IUPE0200E: F\u00f8lgende valgte plugins findes allerede. Hvis du importerer de samme plugins igen, overskrives de eksisterende:\n\n \ {0} \n\nEr du sikker p\u00e5, at du vil forts\u00e6tte?
ImportPluginWizard_confirm_continue=\n\n Er du sikker p\u00e5, at du vil forts\u00e6tte?
ImportPluginWizard_warn_circular_plugins=Der er fundet cirkul\u00e6re referencer mellem f\u00f8lgende plugins
ImportNoSynLib_ConvertMsg=Vil du konvertere det importerede bibliotek til et automatisk synkroniseret bibliotek?
ImportSynLibToNoSynLib_Error=Import af biblioteksdata fra et automatisk synkroniseret bibliotek til et synkroniseringskr\u00e6vende bibliotek er ikke underst\u00f8ttet
ImportNoSynLibToSynLib_Error=Import af biblioteksdata fra et synkroniseringskr\u00e6vende bibliotek til et automatisk synkroniseret bibliotek er ikke underst\u00f8ttet
SelectConfigsToImport_label1=F\u00f8lgende elementer bliver importeret:
ImportConfigurationWizard_error=Fejl
SelectImportConfigurationSource_MSG1=Analyserer
SelectConfigSpecsToImportPage_title2=V\u00e6lg konfigurationsspecifikationer, der skal importeres
SelectImportPluginSource_not_used=ikke_benyttet
SelectImportPluginSource_no_path=Det angivne bibliotek findes ikke.
SelectImportPluginSource_no_dir=Der er ikke angivet et bibliotek
SelectPluginsToImport_label_plugins=Tilg\u00e6ngelige plugins i importbiblioteket:
SelectPluginsToImport_label_author=Forfatter:
SelectPluginsToImport_label_version=Version:
SelectPluginsToImport_label_desc=Kort beskrivelse:
ImportConfigurationWizard_readonly=IUPE0201E: Bibliotek er skrivebeskyttet.
PluginImportingService_MSG0=Validerer valgte plugins...
PluginImportingService_MSG1=Den angivne sti indeholder ikke en gyldig plugin-metode.
PluginImportingService_MSG3=Importerer metode-plugin...
PluginImportingService_MSG5=Den valgte metode-plugin kan ikke importeres. Dens afh\u00e6ngige plugin ''{0}'' findes ikke i det aktuelle metodebibliotek.
PluginImportingService_MSG6=Den valgte metode-plugin kan ikke importeres. En afh\u00e6ngig plugin findes ikke i det aktuelle metodebibliotek.
DiffReportViewer_content=Indhold
DiffReportViewer_in_import=I import
SelectPluginsToImport_MSG1=Analyserer filer...
DiffReportLabelProvider_yes=Ja
SelectPluginsToImport_error=Fejl
DiffReportViewer_in_lib=I bibliotek
DiffReportViewer_status=Status
SelectPluginsToImport_libraryPluginExists=Valgt plugin findes i det aktuelle bibliotek
SelectPluginsToImport_libraryPluginNotExists=Valgt plugin findes ikke i det aktuelle bibliotek
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Konfiguration findes i det aktuelle bibliotek
SelectConfigSpecsToImportPage_configSpecNoSelection=Der er ikke valgt en konfigurationsspecifikation.
SelectConfigSpecsToImportPage_configSpecDataLabel=Valgt konfiguration i importbiblioteket
SelectConfigSpecsToImportPage_label_configs=Tilg\u00e6ngelige konfigurationsspecifikationer i importbiblioteket:
SelectImportConfigurationSource_not_used=ikke_benyttet
SelectConfigSpecsToImportPage_label_desc=Kort beskrivelse:
SelectImportConfigurationSource_no_path=Den angivne sti findes ikke.
SelectPluginsToImport_pluginNoSelection=Der er ikke valgt en plugin.
SelectImportConfigurationSource_no_dir=Der er ikke angivet et bibliotek
SelectImportConfigurationSource_plugin_readonly=Plugin {0} er skrevebeskyttet\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: Plugin''en {0} er l\u00e5st\n
SelectImportConfigurationSource_error_not_updatable=Nogle plugins i biblioteket er l\u00e5st eller skrivebeskyttet.\n L\u00e5s de relevante plugins op, og kontroll\u00e9r, at filerne kan opdateres.
SelectPluginsToImport_pluginDataLabel=Valgt plugin i importbiblioteket
DiffReportViewer_type=Indholdstype
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=Valgt konfiguration findes ikke i det aktuelle bibliotek.
versionMismatch_oldData=IUPE0204E: De angivne filer er eksporteret med en tidligere version ({0}) af {1}. Filerne skal eksporteres med den aktuelle version af {1}.
versionMismatch_oldData_unknown=IUPE0205E: De angivne filer er eksporteret med en tidligere version af {0}. Filerne skal eksporteres med den aktuelle version af {0}.
versionMismatch_oldTool=IUPE0206E: De angivne filer er eksporteret med en nyere version ({0}) af {1}. Du skal opgradere {1} for at kunne importere filerne. 
versionMismatch_oldTool_unknown=IUPE0207E: De angivne filer kan ikke \u00e5bnes. Du skal opgradere {0} for at kunne importere filerne.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: Kan ikke opgradere en eller flere plugins.
optionGroup_text=Importvalg
checkBaseRadioButton_text=Kontroll\u00e9r basis-plugins
ignoreRemoveRadioButton_text=Ignor\u00e9r og fjern ul\u00f8ste referencer
