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

# Error Messages
invalidNameError_msg=Navnet ''{0}'' er ugyldigt. Et metodeelementnavn m\u00e5 ikke indeholde f\u00f8lgende tegn: \\ / : * ? " < > |
objNotFoundError_msg=Kan ikke finde objekt med id''en ''{0}''
loadLibraryError_msg=Der er opst\u00e5et fejl under indl\u00e6sning af metodebibliotek:
loadLibraryError_details=\ \ linje: {0}, kolonne: {1}, meddelelse: {2}
restoreResourceError_msg=Kan ikke gendanne ressourcen ''{0}''
FileManager_fileReadOnly=Filen ''{0}'' er skrivebeskyttet
ErrMsg_CouldNotDelete=Kan ikke slette {0}. {1}
renameError_msg=Kan ikke omd\u00f8be ''{0}'' til ''{1}''
backupError_msg=Kan ikke sikkerhedskopiere ressourcen ''{0}''
modifyFileError_msg=Kan ikke \u00e6ndre filen ''{0}''
filePathNameTooLong_msg=Kan ikke gemme ressource. Filstinavnet er for langt (overstiger 255 tegn) ''{0}''
loadResourceError_msg=Kan ikke indl\u00e6se ressourcen ''{0}''
loadResourceErrorWithReason_msg=Kan ikke indl\u00e6se ressourcen ''{0}''. \u00c5rsag: {1}
invalidLibraryFileError_msg=Ugyldig metodebiblioteksfil:
fileNotFoundError_msg=Kan ikke finde nogen metodebiblioteksfil i arbejdsomr\u00e5det ''{0}''
normalizeURIError_msg=Kan ikke finde ressourcen til elementet identificeret af ''{0}''
moveError_msg=Kan ikke flytte ''{0}'' til ''{1}''. Destinationen findes allerede.
modifyReadOnlyFileError_msg=Kan ikke \u00e6ndre en eller flere skrivebeskyttede filer: {0}
moveResourceError_msg=Ressourcen ''{0}'' er omfattet af en persistensfunktion, som ikke er committet.
modifyFilesError_msg=Kan ikke \u00e6ndre en eller flere filer
resourceOutOfSynch_msg=Ressourcen er ikke synkroniseret og skal indl\u00e6ses igen: {0}
resourceAutoRefreshJob_name=Opfrisk ressource automatisk
loadConfiguration_couldNotLoad_logMsg=Kan ikke indl\u00e6se filen: {0}. Metodekonfigurationen i denne fil har sammenfaldende GUID.
loadConfiguration_notConfigFile_logMsg=Ikke en motodekonfigurationsfil: {0}

# Progress Messages
loadLibraryTask_name=Indl\u00e6ser metodebibliotek...
moveDataTask_name=Flytter data...
saveLibraryTask_name=Gemmer metodebibliotek...
loadResourcesTask_name=Indl\u00e6ser alle ressourcer i hukommelse...
migratingDiagram_name=Migrerer diagrammer...
migrateContentDescriptionsTask_name=Overf\u00f8rer procesindholdsbeskrivelser...
fixPresentationNameTask_name=Afhj\u00e6lper tomme pr\u00e6sentationsnavne...
UnresolvedProxyMarkerManager_couldNotResolveProxy=Kan ikke finde elementet identificeret af ''{0}''
refreshLibraryFilesTask_name=Opfrisker biblioteksfiler i arbejdsomr\u00e5de
cannot_create_dir_msg=Kan ikke oprettet biblioteket ''{0}''.
unresolvedProxyLoggerJob_name=Opretter markeringer for indl\u00e6sningsfejl
