#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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...
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=refererer til ekstern URL: {0}
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
