#  Copyright (c) 2011 Obeo.
#  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:
#      Obeo - initial API and implementation

pluginName = Library Model
providerName = www.example.org

_UI_Library_content_type = Library File
_UI_Books_content_type = Books File
_UI_Writers_content_type = Writers File
_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
_UI_PropertyDescriptor_description = The {0} of the {1}
_UI_Library_type = Library
_UI_BookCopy_type = Book Copy
_UI_Catalog_type = Catalog
_UI_Book_type = Book
_UI_Writer_type = Writer
_UI_Unknown_type = Object
_UI_Unknown_datatype= Value
_UI_Library_name_feature = Name
_UI_Library_books_feature = Books
_UI_BookCopy_book_feature = Book
_UI_BookCopy_copies_feature = Copies
_UI_Catalog_books_feature = Books
_UI_Book_title_feature = Title
_UI_Book_pages_feature = Pages
_UI_Book_authors_feature = Authors
_UI_Catalog_writers_feature = Writers
_UI_Writer_name_feature = Name
_UI_Writer_books_feature = Books
_UI_Unknown_feature = Unspecified

_UI_LibraryEditor_menu = &Library Editor
_UI_BooksEditor_menu = &Books Editor
_UI_WritersEditor_menu = &Writers Editor
_UI_CreateChild_menu_item = &New Child
_UI_CreateSibling_menu_item = N&ew Sibling
_UI_ShowPropertiesView_menu_item = Show &Properties View
_UI_RefreshViewer_menu_item = &Refresh
_UI_SelectionPage_label = Selection
_UI_ParentPage_label = Parent
_UI_ListPage_label = List
_UI_TreePage_label = Tree
_UI_TablePage_label = Table
_UI_TreeWithColumnsPage_label = Tree with Columns
_UI_ObjectColumn_label = Object
_UI_SelfColumn_label = Self
_UI_NoObjectSelected = Selected Nothing
_UI_SingleObjectSelected = Selected Object: {0}
_UI_MultiObjectSelected = Selected {0} Objects
_UI_OpenEditorError_label = Open Editor
_UI_Wizard_category = Example EMF Model Creation Wizards
_UI_CreateModelError_message = Problems encountered in file "{0}"
_UI_LibraryModelWizard_label = Library Model
_UI_LibraryModelWizard_description = Create a new Library model
_UI_LibraryEditor_label = Library Model Editor
_UI_LibraryEditorFilenameDefaultBase = My
_UI_LibraryEditorFilenameExtensions = library
_UI_BooksModelWizard_label = Books Model
_UI_BooksModelWizard_description = Create a new Books model
_UI_BooksEditor_label = Books Model Editor
_UI_BooksEditorFilenameDefaultBase = My
_UI_BooksEditorFilenameExtensions = books
_UI_WritersModelWizard_label = Writers Model
_UI_WritersModelWizard_description = Create a new Writers model
_UI_WritersEditor_label = Writers Model Editor
_UI_WritersEditorFilenameDefaultBase = My
_UI_WritersEditorFilenameExtensions = writers
_UI_Wizard_label = New
_WARN_FilenameExtension = The file name must end in ''.{0}''
_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
_UI_ModelObject = &Model Object
_UI_XMLEncoding = &XML Encoding
_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
_UI_Wizard_initial_object_description = Select a model object to create
_UI_FileConflict_label = File Conflict
_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?

_UI_Book_isbn_feature = Isbn
