# /**
#  * Copyright (c) 2002-2008 IBM Corporation and others.
#  * All rights reserved.   This program and the accompanying materials
#  * are made available under the terms of the Eclipse Public License v2.0
#  * which accompanies this distribution, and is available at
#  * http://www.eclipse.org/legal/epl-v20.html
#  * 
#  * Contributors: 
#  *   IBM - Initial API and implementation
#  */

# NLS_MESSAGEFORMAT_VAR

pluginName = EMF Common UI
providerName = Eclipse Modeling Project

_UI_Maximize_menu_item = Ma&ximize
_UI_Restore_menu_item = &Restore

_UI_FolderSelection_title = Folder Selection
_UI_FileSelection_title = File Selection
_UI_NewFile_title = New File
_UI_NewFolder_label = &New Folder...
_UI_FileName_label = &File Name:

_UI_ResourceDialog_title = Resource
_UI_ResourceURI_label = Resource &URI:
_UI_ResourceURIs_label = Resource &URIs:
_UI_BrowseFileSystem_label = Browse &File System...
_UI_BrowseWorkspace_label = Browse &Workspace...

_UI_ErrorEditor_CreateMarkers_label = Create Markers
_UI_ErrorEditor_OpenEditor_label = &Open with Text Editor

_UI_Error_label = Error
_UI_Problems_label = Problems
_UI_DiagnosticError_label = Diagnostic: Error
_UI_DiagnosticWarning_label = Diagnostic: Warning
_UI_Diagnostic_label = Diagnostic
_UI_OpenEditorError_message = Unable to open the Text Editor
_UI_CreateMarkerError_message = Unable to create the markers for this file

_UI_NoProblems_message = There are no problems with this file
_UI_DefaultProblem_message = Problems encountered.  Click the 'Details' button for further information

_UI_ExampleInstallerWizard_title = New Example
_UI_InstallingExample_message = Installing the example 
_UI_CreatingProjects_message = Creating the projects 
_UI_OpeningFiles_message = Opening files
_UI_ProjectPage_title = Example Projects
_UI_ProjectPage_description = Create the example projects listed below.
_UI_NoProjectError_message = There are no projects to be installed for this example.
_UI_InstallExampleError_message = Unable to install one or more projects of the example.
_UI_ExistingProjectName_message = * {0}
_UI_ProjectRename_message = * A project with this name already exists in the workspace and will be deleted. Use the 'Rename' button to rename the existing project instead.
_UI_ProjectDescriptionAndRename_message = {0}\n\n{1} 
_UI_Rename_label = &Rename...
_UI_CreateProject_message = Creating project ''{0}''
_UI_DirectoryError_message = The content directory ''{0}'' does not exist or cannot be read.
_UI_FileError_message = The content file ''{0}'' does not exist or is not supported.

_UI_ConfirmSingleDeletion_title = Confirm Project Delete
_UI_ConfirmSingleDeletion_message = The following project exists in the workspace and must be removed before the example is installed: {0}.\n\nDelete the project (including its contents on disk)?
_UI_ConfirmMultipleDeletion_title = Confirm Multiple Project Delete
_UI_ConfirmMultipleDeletion_message = The following projects exist in the workspace and must be removed before the example is installed: {0}.\n\nDelete the projects (including their contents on disk)?

_UI_Examples_extensionpoint = Examples
_UI_PressF2ForFocus_label = Press 'F2' for focus

_UI_AdditionalProblems_message = An additional {0} problems...