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

# Plug-in
pluginName=EPF Authoring UI
providerName=Eclipse.org

# Category
methodCategoryName=Metode

# Perspective
authoringPerspectiveName=Redigering
browsingPerspectiveName=Gennemse

# Views
libraryViewName=Bibliotek
configurationViewName=Konfiguration
contentViewName=Indhold
configurationErrorLogViewName=Konfigurationsfejllog

# Editors
methodElementEditorName=Metodeelementeditor
configurationEditorName=Konfigurationseditor
processEditorName=Proceseditor
activityDiagramEditorName=Aktivitetsdiagrameditor
activityDetailDiagramEditorName=Editor til aktivitetsoplysningsdiagram
workProductDepedencyDiagramEditorName=Editor til diagram for arbejdsproduktafh\u00e6ngighed

# Wizards
newMethodLibraryWizardName=Metodebibliotek
newMethodLibraryWizardDescription=Opret nyt metodebibliotek.
newMethodPluginWizardName=Metode-plugin
newMethodPluginWizardDescription=Opret en ny metode-plugin.
newConfigurationWizardName=Metodekonfiguration
newConfigurationWizardDescription=Opret en ny metodekonfiguration.

# Cheat Sheets
methodAuthoringCheatSheetsName=Snydeark til metoderedigering
CheatsheetGetstartedCategoryText=Kom godt i gang
CheatsheetReusableContentCategoryText=Opret genanvendeligt metodeindhold
CheatsheetWriteContentCategoryText=Skriv metodeindhold
CheatsheetProcessesCategoryText=Arbejd med processer
CheatsheetNavigateMethodContent=Navig\u00e9r i metodeindhold
CheatsheetCreateMethodConfiguration=Opret din egen metodekonfiguration
CheatsheetCreateMethodPlugin=Opret din egen metode-plugin
CheatsheetAddMethodContent=Tilf\u00f8j nyt metodeindhold, f.eks. roller, opgaver, arbejdsprodukter eller vejledning
CheatsheetTailorMethodElements=Tilpas eksisterende metodeelementer (roller, opgaver, arbejdsprodukter eller vejledning) vha. bidrag
CheatsheetReplaceMehtodElements=Erstat eksisterende metodeelementer (roller, opgaver, arbejdsprodukter eller vejledning)
CheatsheetAddMethodRefOrHyperlink=Tilf\u00f8j metodereference eller hyperlink (URL)
CheatsheetApplyCapabilityPattern=Anvend funktionsm\u00f8nster
CheatsheetCreateProcess=Opret proces (funktionsm\u00f8nster eller leveringsproces)

# Action Set
authoringActionSet=Redigering
cheatSheetsActionSet=Snydeark

# Global Actions
newLibraryAction=Metodebib&liotek
newLibraryActionTooltip=Opret et nyt metodebibliotek
newPluginAction=Metode-&plugin
newPluginActionTooltip=Opret en ny metode-plugin
newConfigAction=Metode&konfiguration
newConfigActionTooltip=Opret en ny metodekonfiguration
openLibraryAction=Metodebib&liotek
openLibraryActionTooltip=\u00c5bn et eksisterende metodebibliotek
openConfigAction=Metode&konfiguration
openConfigActionTooltip=\u00c5bn en eksisterende metodekonfiguration
openCheatSheets=&Snydeark...

# Library View Actions
linkWithEditor=Link med editor
linkWithEditorTooltip=Link med editor
showPresentationNames=Vis pr\u00e6sentationsnavne
showPresentationNamesTooltip=Vis pr\u00e6sentationsnavne

# Configuration View Actions
refreshConfig=Opfrisk
refreshConfigTooltip=Opfrisk konfiguration

# Preference Page
authoringPreferencePage=Redigering
processEditor=Proceseditor
libraryOptions=Biblioteksindstillinger
startupAndShutdown=Start og nedlukning
debug=Fejlfinding
modelingOptions=Modelleringsindstillinger
diagramAppearance=Diagramudseende
breakdownElementAttributes=Attributter for nedbrydningselement
libraryViewOptions=Fremvisningsindstillinger for bibliotek

# Command Handler
selectAll=Mark\u00e9r alle

# Properties View
_UI_ProcessEditor_menu=Proces
_UI_CreateChild_menu_item=&Ny underordnet
_UI_CreateSibling_menu_item=N&y sideordnet
_UI_ShowPropertiesView_menu_item=&Vis oversigten Egenskaber
_UI_RefreshViewer_menu_item=Opf&risk
_UI_Properties_General=Generelt
_UI_Properties_Documentation=Dokumentation
_UI_Properties_Guidance=Vejledning
_UI_Properties_Work_Rollup=Arbejdskons.
_UI_Properties_Team_Rollup=Teamkons.
_UI_Properties_WP_Rollup=Arb.prod.kons.
_UI_Properties_Roles=Roller
_UI_Properties_WorkProducts=Arbejdsprodukter
_UI_Properties_Steps=Trin
_UI_Properties_Teams=Teams

RichTextMarkerTypeName=HTML-problemer
ConfigurationMarkerTypeName=Konfigurationsproblemer
ExplanationText=Forklaring

