<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="activity_sample_code">Support v4 Demos</string>

    <string name="hello_world"><b>Hello, <i>World!</i></b></string>
    <string name="alert_dialog_two_buttons_title">
        Lorem ipsum dolor sit aie consectetur adipiscing\nPlloaso mako nuto
        siwuf cakso dodtos anr koop.
    </string>
    <string name="alert_dialog_ok">OK</string>
    <string name="alert_dialog_cancel">Cancel</string>
    
    <string name="initial_text">Initial text.</string>
    
    <string name="pick_result">Pick a result to send, or BACK to cancel.</string>
    <string name="corky">Corky</string>
    <string name="violet">Violet</string>
    <string name="receive_result_instructions">Press the button to get an activity result, which will be displayed here:</string>
    <string name="receive_result_result">Get Result</string>
    
    <string name="fragment_alert_dialog_support">Fragment/Alert Dialog</string>

    <string name="fragment_arguments_support">Fragment/Arguments</string>
    <string name="fragment_arguments_msg">Demonstrates a fragment that takes arguments
        as a Bundle at runtime (on the right) or from attributes in a layout (on the left).</string>
    <string name="fragment_arguments_embedded">From Attributes</string>
    <string name="fragment_arguments_embedded_land">Landscape Only</string>

    <string name="fragment_custom_animation_support">Fragment/Custom Animation</string>

    <string name="fragment_hide_show_support">Fragment/Hide and Show</string>

    <string name="fragment_context_menu_support">Fragment/Context Menu</string>
    <string name="fragment_context_menu_msg">Fragment populating a context
            menu; long press the button to see.</string>
    <string name="long_press">Long press me</string>

    <string name="fragment_dialog_support">Fragment/Dialog</string>
    <string name="show">Show</string>

    <string name="fragment_dialog_or_activity_support">Fragment/Dialog or Activity</string>
    <string name="fragment_dialog_or_activity_msg">Demonstrates the same fragment
            being shown as a dialog and embedded inside of an activity.</string>
    <string name="fragment_dialog_or_activity_inline">Fragment embedded inside
            of the activity:</string>

    <string name="fragment_layout_support">Fragment/Layout</string>

    <string name="fragment_list_array_support">Fragment/List Array</string>

    <string name="fragment_menu_support">Fragment/Menu</string>
    <string name="fragment_menu_msg">Build menus from two fragments, allowing
        you to hide them to remove them..</string>
    <string name="fragment1menu">Show fragment 1 menu</string>
    <string name="fragment2menu">Show fragment 2 menu</string>

    <string name="fragment_nesting_tabs_support">Fragment/Nesting Tabs</string>

    <string name="fragment_retain_instance_support">Fragment/Retain Instance</string>
    <string name="fragment_retain_instance_msg">Current progress of retained fragment;
    restarts if fragment is re-created.</string>
    <string name="restart">Restart</string>

    <string name="fragment_receive_result_support">Fragment/Receive Result</string>

    <string name="fragment_stack_support">Fragment/Stack</string>
    <string name="home">Go home</string>
    <string name="new_fragment">Add new</string>
    <string name="delete_fragment">Pop top</string>
    
    <string name="fragment_tabs">Fragment/Tabs</string>

    <string name="fragment_tabs_pager">Fragment/Tabs and Pager</string>

    <string name="fragment_pager_support">Fragment/Pager</string>
    <string name="first">First</string>
    <string name="last">Last</string>

    <string name="fragment_state_pager_support">Fragment/State Pager</string>

    <string name="loader_cursor_support">Loader/Cursor</string>

    <string name="loader_retained_support">Loader/Retained</string>

    <string name="loader_custom_support">Loader/Custom</string>

    <string name="loader_throttle_support">Loader/Throttle</string>

    <string name="local_service_broadcaster">Content/Local Service Broadcaster</string>

    <string name="local_service_broadcaster_msg">Demonstrates use of LocalBroadcastManager
        to communicate from a Service to an Activity.</string>
    <string name="start_service">Start Service</string>
    <string name="stop_service">Stop Service</string>

    <!-- Accessibility API -->

    <string name="accessibility_manager_title">Accessibility/Accessibility Manager</string>
    <string name="accessibility_manager_instructions">
        1. Enable TalkBack from Settings->Accessibility.
        \n2. Go back to this activity.
        \n3. Disable TalkBack from Settings->Accessibility.</string>
    <string name="accessibility_manager_no_enabled_services">No enabled accessibility services or API level lower than ICS.</string>
    <string name="accessibility_manager_enabled_service">ENABLED ACCESSIBILITY SERVICES:
        \n\nService: %1$s\nFeedback: %2$s\nDescription: %3$s\nSettings: %4$s\n</string>
    <string name="accessibility_manager_accessibility_state">Accessibility enabled: %1$s</string>

    <string name="accessibility_delegate_title">Accessibility/Accessibility Delegate</string>
    <string name="accessibility_delegate_instructions">
        1. Enable TalkBack from Settings->Accessibility.
        \n2. Go back to this activity.
        \n3. Touch the button below.</string>
    <string name="accessibility_delegate_button">Button</string>
    <string name="accessibility_delegate_custom_text_added">Custom text added via an accessibility delegate.</string>

    <string name="share_text">Share some text</string>
    <string name="share_file">Share a file</string>
    <string name="share_multiple_file">Share multiple files</string>
    <string name="sharing_support_title">ShareCompat Demo</string>
    <string name="sharing_receiver_title">ShareCompat Receiver</string>

    <string name="file_provider_example">FileProvider example</string>
    <string name="drawer_layout_support">Widget/Drawer layout</string>

    <string name="drawer_layout_summary">This activity illustrates the use of sliding drawers. The drawer may be pulled out from the left edge with an edge swipe. If this demo is running on Ice Cream Sandwich or newer you may tap the icon at the left side of the action bar to open the drawer as well.</string>

    <string name="drawer_open">Open navigation drawer</string>
    <string name="drawer_close">Close navigation drawer</string>

    <string name="sliding_pane_layout_support">Widget/Sliding pane layout</string>

    <string name="sliding_pane_layout_summary">This activity illustrates the use of sliding panes. The content pane may be slid to one side on narrow devices to reveal the left pane used to select content. Sliding panes can be used to fit a UI intended for wider screens in a smaller space. Tapping the Action Bar\'s Up button at the left side of the bar will navigate up in the hierarchy, represented by the left pane. If you rotate the device to landscape mode, on most devices you will see that both panes fit together side by side with no sliding necessary.</string>

</resources>
