<?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>

    <!-- Fragment API -->

    <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="hide">Hide</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>

    <string name="simple_wakeful_controller">Content/Simple WakefulReceiver</string>

    <string name="simple_wakeful_controller_msg">Demonstrates use of WakefulBroadcastReceiver
        to keep the device awake while dispatching a broadcast to a service.</string>
    <string name="schedule_wakeful_alarm">Wakeup in 30 seconds</string>
    <string name="simple_wakeful_scheduled">Alarm scheduled</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">App/ShareCompat Demo</string>
    <string name="sharing_receiver_title">ShareCompat Receiver</string>

    <string name="file_provider_example">Content/FileProvider example</string>

    <!-- Text API -->

    <string name="without_bidiformatter">Without BidiFormatter:</string>
    <string name="with_bidiformatter">With BidiFormatter:</string>
    <string name="bidiformatter_support_title">Text/BidiFormatter Demo</string>

    <!-- TransportController -->

    <string name="sample_transport_controller_activity">Media/TransportController</string>

    <string name="view_pager_layout_support">View/View pager</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>

    <!-- ExploreByTouchHelper -->

    <string name="explore_by_touch_helper_support">Widget/Explore by Touch helper</string>
    <string name="sample_item_a">Sample item A</string>
    <string name="sample_item_b">Sample item B</string>

    <!-- ContentLoadingProgressBar -->
    <string name="content_loading_progress_bar">Widget/Content Loading Progress Bar</string>

    <!--  Swipe refresh -->
    <string name="swipe">Widget/SwipeRefreshLayout</string>

    <string name="nested_scroll">Widget/Nested Scrolling</string>

    <string name="nested_scroll_long_text">This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it. This is some long text. It just keeps going. Look at it. Scroll it. Scroll the nested version of it.</string>
    <string name="regular">regular</string>
    <string name="round">round</string>

    <string name="drawable_compat_no_tint">Not tint</string>
    <string name="drawable_compat_color_tint">Color tint</string>
    <string name="drawable_compat_color_list_tint">Color state list</string>
</resources>
