#-------------------------------------------------------------------------------
# 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: IUPP0000E - IUPP0099E
#

# Progress Messages
publishingConfigurationTask_name=Publicerer konfigurationen...
initializingDirTask_name=Initialiserer destinationsbibliotek...
copyingFilesTask_name=Kopierer filer...
generatingBookmarksTask_name=Genererer bogm\u00e6rker...
generatingBookmarkTask_name=Genererer bogm\u00e6rket ''{0}''...
generatingBookmarkIndexTask_name=Genererer bogm\u00e6rkeindeks...
publishingLinkedElementTask_name=Publicerer metodeelementer: {0} publiceret, {1} mangler
publishingElementTask_name=Publicerer metodeelement: {0}:{1}
generatingGlossaryTask_name=Genererer ordliste...
generatingSearchIndexTask_name=Genererer s\u00f8geindeks...
generatingWARFileTask_name=Genererer WAR-fil...
buildingProcessClosureTask_name=Bygger procesafslutning...
buildingElementClosureTask_name=Bygger elementafslutning for ''{0}''...
loadLibraryTask_name=Indl\u00e6ser biblioteksindhold...

# Error Messages logged in the Publishing Report
publishElementError_msg=IUPP0000E: Fejl under publicering af element: {0}
serverError_msg=IUPP0001E: Ingen data returneret fra server.
invalidHttpResponseError_msg=IUPP0002E: Ugyldigt svar fra http://{0}:{1}:{2}

# Warning Messages logged in the Publishing Report
invalidElementWarning_msg=IUPP0003W: Element er ikke publiceret, fordi det ikke er et gyldigt element i konfigurationen.
invalidMethodElementWarning_msg=IUPP0004W: Element er ikke publiceret, fordi det ikke er et metodeelement: {0}
copyFileWarning_msg=IUPP0005W: Kan ikke kopiere fil fra ''{0}'' til ''{1}''.
missingIconFileWarning_msg=IUPP0006W: Nodeikonfilen ''{0}'' findes ikke.
missingIconNameWarning_msg=IUPP0007W: Kan ikke hente navnet p\u00e5 nodeikonen.
externalUrl_msg={0} minisekunder, der refererer til ekstern URL: {1}
discaredCategoryWarning_msg=Tomt indholdskategorielement er ikke publiceret.

# Error Details
createSearchIndexError_msg=IUPP0008E: S\u00f8geindeksfilen er ikke oprettet.

# Process Tree Nodes
referenceWorkflowsNode_text=Referencearbejdsgange
taskNode_text=Opgaver
primarilyPerformsNode_text=Udf\u00f8rer prim\u00e6rt
additionallyPerformsNode_text=Udf\u00f8rer yderligere
performingRolesNode_text=Udf\u00f8rende roller
inputWorkProductsNode_text=Inputarbejdsprodukter
outputWorkProductsNode_text=Outputarbejdsprodukter
responsibleForNode_text=Ansvarlig for
modifiesNode_text=\u00c6ndrer
responsibleRoleNode_text=Ansvarlig rolle
containingWorkProductNode_text=Indeholder arbejdsprodukt
containedWorkProductsNode_text=Indeholdte arbejdsprodukter
guidanceNode_text=Vejledning
inputToNode_text=Input til
outputFromNode_text=Output fra

# HTML Title for Index Page
indexLabel_text=Indeks
