<?xml version="1.0" encoding="utf-8"?>
<!--
/*
* Copyright (C) 2008 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">
    <!-- General -->
    <skip />
    <!-- Application name -->
    <string name="application_name">Launcher</string>
    <!-- Accessibility-facing application name -->
    <string name="home">Home</string>
    <!-- Name for all applications running as this uid. -->
    <string name="uid_name">Android Core Apps</string>
    <!-- Default folder name -->
    <string name="folder_name"></string>
    <!-- Title of dialog that appears after user selects Wallpaper from menu -->
    <string name="chooser_wallpaper">Choose wallpaper from</string>
    <!-- Button label on Wallpaper Gallery screen; user selects this button to set a specific wallpaper -->
    <string name="wallpaper_instructions">Set wallpaper</string>
    <!-- Option in "Select wallpaper from" dialog box -->
    <string name="pick_wallpaper">Wallpapers</string>
    <!-- Displayed when user selects a shortcut for an app that was uninstalled [CHAR_LIMIT=none]-->
    <string name="activity_not_found">App isn\'t installed.</string>
    <!--  Labels for the tabs in the customize drawer -->
    <string name="widgets_tab_label">Widgets</string>

    <!-- AppsCustomize pane -->
    <!-- Message to tell the user to press and hold on a widget to add it [CHAR_LIMIT=50] -->
    <string name="long_press_widget_to_add">Touch &amp; hold to pick up a widget.</string>
    <!-- Market button text.  The market button text is removed in Launcher.java 
         in the Phone UI. [CHAR LIMIT=32] -->
    <string name="market">Shop</string>
    <!-- The format string for the dimensions of a widget in the drawer -->
    <string name="widget_dims_format" translatable="false">%1$d x %2$d</string>

    <!-- External-drop widget pick label format string [CHAR_LIMIT=25] -->
    <string name="external_drop_widget_pick_format" translatable="false">%1$s (%2$d x %3$d)</string>
    <!-- External-drop widget error string.  This is the error that is shown
         when you drag and item into the homescreen and it is unable to fit,
         or an error is encountered. [CHAR_LIMIT=50] -->
    <string name="external_drop_widget_error">Couldn\'t drop item on this Home screen.</string>
    <!-- External-drop widget pick title.  This is shown as the title of the
         dialog which allows you to pick which widgets to handle a particular
         drop if there are multiple choices. [CHAR_LIMIT=35] -->
    <string name="external_drop_widget_pick_title">Choose widget to create</string>

    <!-- Folders -->
    <skip />
    <!-- Label of Folder name field in Rename folder dialog box -->
    <string name="rename_folder_label">Folder name</string>
    <!-- Title of dialog box -->
    <string name="rename_folder_title">Rename folder</string>
    <!-- Buttons in Rename folder dialog box -->
    <string name="rename_action">OK</string>
    <!-- Buttons in Rename folder dialog box -->
    <string name="cancel_action">Cancel</string>

    <!-- Shortcuts -->
    <skip />
    <!-- Title of dialog box -->
    <string name="menu_item_add_item">Add to Home screen</string>
    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all apps -->
    <string name="group_applications">Apps</string>
    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all shortcut
s -->
    <string name="group_shortcuts">Shortcuts</string>
    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets/gadgets -->
    <string name="group_widgets">Widgets</string>
    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of apps that can set the wallpaper-->
    <string name="group_wallpapers">Wallpapers</string>
    <!-- Error message when user has filled all their home screens -->
    <string name="completely_out_of_space">No more room on your Home screens.</string>
    <!-- Error message when user has filled a home screen -->
    <string name="out_of_space">No more room on this Home screen.</string>
    <!-- Error message when user has filled the hotseat -->
    <string name="hotseat_out_of_space">No more room on the hotseat.</string>
    <!-- Error message when user tries to drop an invalid item on the hotseat -->
    <string name="invalid_hotseat_item">This widget is too large for the hotseat.</string>
    <!-- Message displayed when a shortcut is created by an external application -->
    <string name="shortcut_installed">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" created.</string>
    <!-- Message displayed when a shortcut is uninstalled by an external application -->
    <string name="shortcut_uninstalled">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" was removed.</string>
    <!-- Message displayed when an external application attemps to create a shortcut that already exists -->
    <string name="shortcut_duplicate">Shortcut \"<xliff:g id="name" example="Browser">%s</xliff:g>\" already exists.</string>

    <!-- Title of dialog when user is selecting shortcut to add to homescreen -->
    <string name="title_select_shortcut">Choose shortcut</string>
    <!-- Title of dialog when user is selecting an application to add to homescreen -->
    <string name="title_select_application">Choose app</string>

    <!-- All applications label -->
    <string name="all_apps_button_label">Apps</string>
    <!-- Label for button in all applications label to go back home (to the workspace / desktop)
         for accessibilty (spoken when the button gets focus). -->
    <string name="all_apps_home_button_label">Home</string>
    <!-- Label for trash icon on workspace. Meant to communicate the idea of removing the
         icon/widget from the home screen, but not permanently. [CHAR_LIMIT=30] -->
    <string name="delete_zone_label_workspace">Remove</string>
    <!-- Label for trash icon in All Apps. The icon/widget will become completely unavailable on the
         device. [CHAR_LIMIT=30]-->
    <string name="delete_zone_label_all_apps">Uninstall</string>

    <!-- Label for delete drop target. [CHAR_LIMIT=30] -->
    <string name="delete_target_label">Remove</string>
    <!-- Label for uninstall drop target. [CHAR_LIMIT=30]-->
    <string name="delete_target_uninstall_label">Uninstall</string>
    <!-- Label for the info icon. [CHAR_LIMIT=30] -->
    <string name="info_target_label">App info</string>

    <!-- Accessibility: Search button -->
    <string name="accessibility_search_button">Search</string>
    <!-- Accessibility: Voice Search button -->
    <string name="accessibility_voice_search_button">Voice Search</string>
    <!-- Accessibility: AllApps button -->
    <string name="accessibility_all_apps_button">Apps</string>
    <!-- Accessibility: Delete button -->
    <string name="accessibility_delete_button">Remove</string>

    <!-- Label for trash icon in All Apps, when an updated system app is selected. The update will
         be uninstalled. [CHAR_LIMIT=30] -->
    <string name="delete_zone_label_all_apps_system_app">Uninstall update</string>

    <!-- Menus items: -->
    <skip />
    <!-- Verb, menu item used to add an item on the desktop -->
    <string name="menu_add">Add</string>
    <!-- Menu item used to manage installed applications -->
    <string name="menu_manage_apps">Manage apps</string>
    <!-- Noun, menu item used to set the desktop's wallpaper -->
    <string name="menu_wallpaper">Wallpaper</string>
    <!-- Verb, menu item used to initiate global search -->
    <string name="menu_search">Search</string>
    <!-- Noun, menu item used to bring down the notifications shade -->
    <string name="menu_notifications">Notifications</string>
    <!-- Noun, menu item used to show the system settings -->
    <string name="menu_settings">System settings</string>
    <!-- Noun, menu item used to show help. [CHAR_LIMIT=none] -->
    <string name="menu_help">Help</string>

    <!-- URL pointing to help text. If empty, no link to help will be created [DO NOT TRANSLATE] -->
    <string name="help_url" translatable="false"></string>

    <!--  Strings for the contextual action bar (CAB) in All Apps -->
    <skip />
    <!-- Describes the button for uninstalling the currently selected application.
         Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
    <string name="cab_menu_delete_app">Uninstall app</string>
    <!-- Describes the button for getting details/info about currently selected application.
         Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
    <string name="cab_menu_app_info">App details</string>
    <!-- Appears in the CAB when an app is selected in All Apps or Customize mode. [CHAR_LIMIT=50] -->
    <string name="cab_app_selection_text">1 app selected</string>
    <!-- Appears in the CAB when a widget is selected in Customize mode. [CHAR_LIMIT=50] -->
    <string name="cab_widget_selection_text">1 widget selected</string>
    <!-- Appears in the CAB when a folder is selected in Customize mode. [CHAR_LIMIT=50] -->
    <string name="cab_folder_selection_text">1 folder selected</string>
    <!-- Appears in the CAB when a shortcut is selected in Customize mode. [CHAR_LIMIT=50] -->
    <string name="cab_shortcut_selection_text">1 shortcut selected</string>

    <!-- Permissions: -->
    <skip />
    <!-- Permission short label -->
    <string name="permlab_install_shortcut">install shortcuts</string>
    <!-- Permission description -->
    <string name="permdesc_install_shortcut">Allows an app to add
        shortcuts without user intervention.</string>
    <!-- Permission short label -->
    <string name="permlab_uninstall_shortcut">uninstall shortcuts</string>
    <!-- Permission description -->
    <string name="permdesc_uninstall_shortcut">Allows the app to remove
        shortcuts without user intervention.</string>
    <!-- Permission short label -->
    <string name="permlab_read_settings">read Home settings and shortcuts</string>
    <!-- Permission description -->
    <string name="permdesc_read_settings">Allows the app to read the settings and
        shortcuts in Home.</string>
    <!-- Permission short label -->
    <string name="permlab_write_settings">write Home settings and shortcuts</string>
    <!-- Permission description -->
    <string name="permdesc_write_settings">Allows the app to change the settings and
        shortcuts in Home.</string>

    <!-- Widgets: -->
    <skip />    

    <!-- Text to show user in place of a gadget when we can't display it properly -->
    <string name="gadget_error_text">Problem loading widget</string>

    <!-- Text to inform the user that they can't uninstall a system application -->
    <string name="uninstall_system_app_text">This is a system app and can\'t be uninstalled.</string>

    <!-- Title of the Android Dreams (screensaver) module -->
    <string name="dream_name">Rocket Launcher</string>

    <!-- Default folder title -->
    <string name="folder_hint_text">Unnamed Folder</string>

    <!-- Accessibility -->
    <skip />

    <!-- The format string for Workspace descriptions [CHAR_LIMIT=none] -->
    <string name="workspace_description_format">Home screen %1$d</string>

    <!-- The format string for default page scroll text [CHAR_LIMIT=none] -->
    <string name="default_scroll_format">Page %1$d of %2$d</string>
    <!-- The format string for Workspace page scroll text [CHAR_LIMIT=none] -->
    <string name="workspace_scroll_format">Home screen %1$d of %2$d</string>
    <!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
    <string name="apps_customize_apps_scroll_format">Apps page %1$d of %2$d</string>
    <!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
    <string name="apps_customize_widgets_scroll_format">Widgets page %1$d of %2$d</string>

    <!-- Clings -->
    <!-- The title text for the workspace cling [CHAR_LIMIT=none] -->
    <string name="workspace_cling_title">Make yourself at home</string>
    <!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
    <string name="workspace_cling_move_item">You can put your favorite apps here.</string>
    <!-- The description of how to open all apps from the workspace [CHAR_LIMIT=none] -->
    <string name="workspace_cling_open_all_apps">To see all your apps, touch the circle.</string>
    <!-- The title text for the All Apps cling [CHAR_LIMIT=none] -->
    <string name="all_apps_cling_title">Choose some apps</string>
    <!-- The description of how to pick up and add an item to the workspace [CHAR_LIMIT=none] -->
    <string name="all_apps_cling_add_item">To add an app to your Home screen, touch &amp; hold it.</string>
    <!-- The title text for the Folder cling [CHAR_LIMIT=none] -->
    <string name="folder_cling_title">Organize your apps with folders</string>
    <!-- The description of how to move an app [CHAR_LIMIT=none] -->
    <string name="folder_cling_move_item">To move an app, touch &amp; hold it.</string>
    <!-- The description of how to create a folder [CHAR_LIMIT=none] -->
    <string name="folder_cling_create_folder">To make a new folder on your Home screen, stack one app on top of another.</string>
    <!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] -->
    <string name="cling_dismiss">OK</string>
    <!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] -->
    <string name="dummy_custom_cling_error_message">Error: custom workspace layout passed in but custom cling was not overwritten</string>
    <add-resource type="string" name="default_folder_name" />

    <!-- Folder accessibility -->
    <!-- The format string for when a folder is opened, speaks the dimensions -->
    <string name="folder_opened">Folder opened, <xliff:g id="width" example="5">%1$d</xliff:g> by <xliff:g id="height" example="3">%2$d</xliff:g></string>
    <!-- Instruction that clicking outside will close folder -->
    <string name="folder_tap_to_close">Touch to close folder</string>
    <!-- Instruction that clicking outside will commit folder rename -->
    <string name="folder_tap_to_rename">Touch to save rename</string>
    <!-- Indication that folder closed -->
    <string name="folder_closed">Folder closed</string>
    <!-- Folder renamed format -->
    <string name="folder_renamed">Folder renamed to <xliff:g id="name" example="Games">%1$s</xliff:g></string>
    <!-- Folder name format -->
    <string name="folder_name_format">Folder: <xliff:g id="name" example="Games">%1$s</xliff:g></string>

    <!-- Strings used in device overlays -->

    <!-- Clings -->
    <!-- Dummy string [CHAR_LIMIT=40] -->
    <string name="custom_workspace_cling_title_1"></string>
    <!-- Dummy string [CHAR_LIMIT=60] -->
    <string name="custom_workspace_cling_description_1"></string>
    <!-- Dummy string [CHAR_LIMIT=40] -->
    <string name="custom_workspace_cling_title_2"></string>
    <!-- Dummy string [CHAR_LIMIT=60] -->
    <string name="custom_workspace_cling_description_2"></string>

</resources>
