# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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
activityDiagram=Aktivitetsdiagram
validation=Validering

# 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

ClearAllValidationItems=Ryd alle valideringselementer
