###############################################################################
# Copyright (c) 2007, 2009 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 API and implementation
###############################################################################
#msaa
msaa_application=Application
msaa_button=Button
msaa_cell=cell
msaa_checkbox=check box
msaa_checked=checked
msaa_checker_tip=Go to GUI Report
msaa_checker=Go to &GUI Report
msaa_clear_tip=Clear Event Logs
msaa_clear=Clea&r
msaa_collapse=Collapse
msaa_collapse_all=Collapse All
msaa_columnheader=Column header
msaa_combobox=Combo box
msaa_description=Description
msaa_document=Document
msaa_edit=Edit
msaa_edit_readonly=Edit read only
msaa_editspinbox=edit spin box
msaa_expand=Expand &All Children
msaa_expand_all=Expand All
msaa_external_browsers=External &Browsers
msaa_external_windows=External &Windows
msaa_filter_html=Show &Flash Items Only
msaa_flash_end=Flash movie end
msaa_flash_start=Flash movie start
msaa_flash_inaccessible=Inaccessible Flash movie
msaa_font=Font:
msaa_graphic=Graphic
msaa_showTTSEvents=Show &On-Screen TTS Messages
msaa_showNull=Show &null Properties
msaa_indicator=Indicator
msaa_jaws_simulation=GUI Summary
msaa_link=Link
msaa_listbox=List box
msaa_menu=menu
msaa_submenu=submenu
msaa_menubar=Menu bar
msaa_msaa_event=GUI Event
msaa_name=Name
msaa_value=Value
msaa_NAMELESS=Nameless
msaa_no_alt_for_button=No alternative text for button
msaa_no_alt_for_clickable_object=No alternative text for clickable item
msaa_no_alt_for_graphic=No alternative text for graphic
msaa_no_alt_for_nonclickable_object=No alternative text for non-clickable item
msaa_no_alt_for_form_control=No alternative text for form control
msaa_no_title_for_table=No caption for table
msaa_no_text_for_link=No text for hyperlink
msaa_no_title_for_frame=No title for frame
msaa_invisible_flash=Inaccessible Flash (wmode property is transparent or opaque). Confirm existence of accessible alternative or change wmode property.
msaa_no_alt_graphic_flash=No alternative text for graphic. Set appropriate text to 'name' property. Or, change 'silent' property to 'true' if this object is ignorable.
msaa_not_checked=not checked
msaa_preference_description=GUI accessibility preferences
msaa_progressbar=Progress bar
msaa_radiobutton=radio button
msaa_refresh=&Refresh
msaa_role=Role
msaa_rowheader=Row header
msaa_scrollbar=Scroll bar
msaa_selected=selected
msaa_show_problem=Show Report I&cons on Screen
msaa_show_tree=Show &Icons on Screen
msaa_speak_event=Read &Event Messages
msaa_speak_tip=Read Entire Text
msaa_speak_here=Read from &Here
msaa_speak=Read &All
msaa_state=State
msaa_statusbar=Status bar
msaa_stop_tip=Stop reading
msaa_stop=&Stop
msaa_tab=Tab
msaa_table=Table
msaa_toolbar=Tool bar
msaa_tree=tree
msaa_treeview=Tree view
msaa_unavailable=Unavailable
msaa_updown_scrollbat=up down Scroll bar
msaa_window=Window
msaa_warning=Warning
msaa_menu_start=menu
msaa_menu_end=End menu
msaa_popup_start=submenu
msaa_popup_end=End submenu
msaa_show_offscreen=Show &Off-screen Items
msaa_no_flash=No Flash text in this page
msaa_empty_page=This page is empty
msaa_ns_passed=------ ({0,number,#.#} second passed)
msaa_jaws_notarget=No target window is specified.\n\nPlease select an window in the "Target Window" menu.
msaa_showError=Show &Error Report
msaa_showWarning=Show &Warning Report
msaa_showInformation=Show &Information Report
msaa_preferences=&Preferences...
msaa_bringToTop=Always on &Top
msaa_switchPerspective=&Hide Embedded Browser Automatically
msaa_changePropertiesColor=Show &Value Change with Color
msaa_filters_menu=&Filters...
msaa_filters_title=GUI Event Filters
msaa_filters_message=S&elect the events to display
msaa_filters_default=&Restore Defaults
msaa_showRawEvents=S&how Event Details
msaa_vis_label=Visualization Options
msaa_vis_notice=We recommend that screen reader users turn off these options
msaa_vis_use_overlay=&Use transparent window for visualization
msaa_vis_always_top=Keep tool window on &top
msaa_copy=&Copy
msaa_invoke=&Invoke Method

#msaa properties
props_pressEnter=Press Enter to Invoke
props_pressOK=Press OK to Invoke
props_invalid=*Invalid value {0}
props_range=*Valid range: {1} <= {0} <={2}
props_success=Success
props_fail=Fail

#ia2
ia2_shape=Shape
ia2_style_shape={0} shape
ia2_heading_level=Heading level {0}

#SWT Bridge
AccessibleObjectFactory_0=Default (SWT based)
