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