<!--
     Copyright (C) 2017 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">
    <!-- The name of this application, a wallpaper picker. [CHAR LIMIT=50] -->
    <string name="wallpaper_app_name">Wallpapers</string>

    <string name="app_name">@string/wallpaper_app_name</string>

    <!-- UI Strings -->
    <!-- Label which asks the user to select a wallpaper category from the given choices. [CHAR LIMIT=50] -->
    <string name="select_wallpaper_label">Wallpaper categories</string>

    <!-- Label for a button which lets user set the displayed image as wallpaper. [CHAR LIMIT=30] -->
    <string name="set_wallpaper_button_text">Set wallpaper</string>

    <!-- Message shown in a dialog indicating that the app is setting an image as the device
         wallpaper. [CHAR LIMIT=100] -->
    <string name="set_wallpaper_progress_message">Setting wallpaper&#8230;</string>

    <!-- Label for a button which lets user try to set the wallpaper again. [CHAR LIMIT=30] -->
    <string name="try_again">Try again</string>

    <!-- Error message indicating the app could not successfully set an image as the device
         wallpaper. [CHAR LIMIT=100] -->
    <string name="set_wallpaper_error_message">Unable to set wallpaper.</string>

    <!-- Error message indicating the app could not load the user-selected wallpaper image for
         preview. [CHAR LIMIT=100] -->
    <string name="load_wallpaper_error_message">
        Unable to load wallpaper. The image is either corrupted or unavailable.
    </string>

    <!-- Label indicating that the wallpaper being shown near it is the wallpaper that is currently
         set on the device. [CHAR LIMIT=100] -->
    <string name="static_wallpaper_presentation_mode_message">Currently set</string>

    <!-- Label indicating that the wallpaper being shown near it is the wallpaper that is currently
         set on the device and is part of a daily rotation of wallpapers. [CHAR LIMIT=100] -->
    <string name="rotating_wallpaper_presentation_mode_message">Daily wallpaper</string>

    <!-- Label indicating that the wallpaper being shown is set both on home screen and on lock
        screen [CHAR LIMIT=100] -->
    <string name="wallpaper_destination_both">Home &amp; Lock screen</string>

    <!-- Label indicating the title for block that allows user to select a on-device
         wallpaper in the WallpaperPicker screen [CHAR LIMIT=100] -->
    <string name="choose_a_wallpaper_section_title">Choose a Wallpaper</string>

    <!-- Label indicating the title for Creative Wallpapers block in the WallpaperPicker screen [CHAR LIMIT=100] -->
    <string name="creative_wallpaper_title">Create wallpaper</string>

    <!-- Label referring to the home screen of the device, i.e. shown behind the launcher.
         [CHAR LIMIT=30] -->
    <string name="home_screen_message">Home screen</string>

    <!-- Label referring to the lock screen of the device, i.e. what is shown when user turns on the
         device screen. [CHAR LIMIT=30] -->
    <string name="lock_screen_message">Lock screen</string>

    <!-- Short label describing that a wallpaper has been set to both the home and lock screens of
         the user's device. [CHAR LIMIT=30] -->
    <string name="home_and_lock_short_label">Home &#38; Lock</string>

    <!-- Label for a dialog which lets the user set an image as wallpaper. [CHAR LIMIT=50] -->
    <string name="set_wallpaper_dialog_message">Set wallpaper on</string>

    <!-- Label referring to the home screen of the device, i.e. shown behind the launcher.
         [CHAR LIMIT=100] -->
    <string name="set_wallpaper_home_screen_destination">Home screen</string>

    <!-- Label referring to the lock screen of the device, i.e. what is shown when user turns on the
         device screen. [CHAR LIMIT=100] -->
    <string name="set_wallpaper_lock_screen_destination">Lock screen</string>

    <!-- Label referring to both the home screen and the lock screen of the
         device. [CHAR LIMIT=100] -->
    <string name="set_wallpaper_both_destination">Home and lock screens</string>

    <!-- Label describing a live wallpaper whose responsibility is to display a different wallpaper
         on a periodic basis (i.e., in a daily rotation). [CHAR LIMIT=80] -->
    <string name="no_backup_image_wallpaper_label">Rotating Image Wallpaper</string>

    <!-- Message explaining to the user that the storage permission is needed to view the current
         wallpaper. [CHAR LIMIT=none] -->
    <string name="permission_needed_explanation">
      To display the current wallpaper here,
      <xliff:g example="Wallpapers" id="app_name">%1$s</xliff:g> needs access to your device\'s
      storage.
    </string>

    <!-- Message explaining to the user that the storage permission is needed to view the current
         wallpaper and that they grant it by going to the app's "app info" Settings page.
         [CHAR LIMIT=none] -->
    <string name="permission_needed_explanation_go_to_settings">
      To display the current wallpaper here, Wallpapers needs access to your device’s
      storage.\n\nTo change this setting, go to the Permissions area of Wallpapers’ app info.
    </string>

    <!-- Label for the button which, when clicked, requests the storage permission.
         [CHAR LIMIT=50] -->
    <string name="permission_needed_allow_access_button_label">
      Allow access
    </string>

    <!-- Description of a live wallpaper whose responsibility is to display a different wallpaper
         on a periodic basis (i.e., in a daily rotation). [CHAR LIMIT=100] -->
    <string name="no_backup_image_wallpaper_description">
      Live wallpaper service for rotating wallpapers
    </string>

    <!-- Title of a feature where the wallpaper changes on a daily basis. [CHAR LIMIT=50] -->
    <string name="daily_refresh_tile_title">Daily wallpaper</string>

    <!-- Label indicating user can tap this tile with their finger to enable the feature.
         [CHAR LIMIT=100] -->
    <string name="daily_refresh_tile_subtitle">Tap to turn on</string>

    <!-- Message indicating that user must tap the "Set wallpaper" button on a subsequent screen
         to complete setup of the daily wallpaper rotation feature. [CHAR LIMIT=none] -->
    <string name="start_rotation_dialog_body_live_wallpaper_needed">
      Wallpaper will change automatically every day. To finish setup, tap
      <![CDATA[<strong>Set wallpaper</strong>]]> on the next screen.
    </string>

    <!-- Message indicating that, if this box is checked, future wallpapers will be enabled only
         when the device has Wi-fi enabled. [CHAR LIMIT=100] -->
    <string name="start_rotation_dialog_wifi_only_option_message">
      Download future wallpapers on Wi-Fi only
    </string>

    <!-- Label for a button letting the user continue on to enable daily wallpaper rotation.
         [CHAR LIMIT=30] -->
    <string name="start_rotation_dialog_continue">Continue</string>

    <!-- Message indicating the app is downloading the first wallpaper in a daily rotation.
         [CHAR LIMIT=100] -->
    <string name="start_rotation_progress_message">Downloading first wallpaper&#8230;</string>

    <!-- Error message indicating the app could not download the first wallpaper of a daily
         rotation. [CHAR LIMIT=none] -->
    <string name="start_rotation_error_message">
      Unable to download first wallpaper. Please check your network settings and try again.
    </string>

    <!-- Message explaining to the user that daily rotation means the wallpaper on the device will
         change daily. [CHAR LIMIT=none] -->
    <string name="start_rotation_dialog_body">
      Wallpaper will change automatically every day
    </string>

    <!-- Label for a button linking to Android Settings. [CHAR LIMIT=50] -->
    <string name="settings_button_label">
      Settings
    </string>

    <!-- Label for a button allowing user to learn more about a wallpaper [CHAR LIMIT=30] -->
    <string name="explore">Explore</string>

    <!-- Label for a button letting user set the next wallpaper on the device. [CHAR LIMIT=100] -->
    <string name="next_wallpaper">Next wallpaper</string>

    <!-- Message indicating that setting the wallpaper on the device has is disabled
         [CHAR LIMIT=none] -->
    <string name="wallpaper_disabled_message">
        Setting a wallpaper is disabled on this device
    </string>

    <!-- Message indicating the administrator of the device has disabled viewing and setting
         the wallpaper of the device. [CHAR LIMIT=none] -->
    <string name="wallpaper_disabled_by_administrator_message">
        Setting a wallpaper is disabled by your device administrator
    </string>

    <!-- Message indicating that the selected wallpaper was successfully set on the device.
         [CHAR_LIMIT=100] -->
    <string name="wallpaper_set_successfully_message">
        Wallpaper set successfully
    </string>

    <!-- Message indicating that the user needs to be connected to the Internet to view the
         collections of wallpapers.
         [CHAR_LIMIT=none] -->
    <string name="wallpapers_unavailable_offline_message">
        You need an Internet connection to view wallpapers. Please connect and try again."
    </string>

    <!-- Content descriptions -->
    <!-- Content description for a thumbnail showing the currently set home screen wallpaper.
         [CHAR LIMIT=none] -->
    <string name="currently_set_home_wallpaper_thumbnail">
      Currently set home screen wallpaper thumbnail
    </string>

    <!-- Content description for a thumbnail showing the currently set lock screen wallpaper.
         [CHAR LIMIT=none] -->
    <string name="currently_set_lock_wallpaper_thumbnail">
      Currently set lock screen wallpaper thumbnail
    </string>

    <!-- Content description for a thumbnail showing the currently set wallpaper.
         [CHAR LIMIT=none] -->
    <string name="currently_set_wallpaper_thumbnail">Currently set wallpaper thumbnail</string>

    <!-- Content description for a thumbnail image of a wallpaper. [CHAR LIMIT=none] -->
    <string name="wallpaper_thumbnail">Wallpaper thumbnail</string>

    <!-- Content description for a button letting the user learn more about the currently set home
         screen wallpaper. [CHAR LIMIT=none] -->
    <string name="explore_home_screen">Explore home screen wallpaper</string>

    <!-- Content description for a button letting the user learn more about the currently set lock
         screen wallpaper. [CHAR LIMIT=none] -->
    <string name="explore_lock_screen">Explore lock screen wallpaper</string>

    <!-- Content description for a button letting the user skip to the next daily wallpaper on the
         home screen. [CHAR LIMIT=none] -->
    <string name="refresh_daily_wallpaper_home_content_description">Refresh daily home screen wallpaper</string>

    <!-- Content description for a button letting the user skip to the next daily wallpaper.
         [CHAR LIMIT=none] -->
    <string name="refresh_daily_wallpaper_content_description">Refresh daily wallpaper</string>

    <!-- Content description for the wallpaper preview screen. [CHAR LIMIT=none] -->
    <string name="preview_screen_description">Wallpaper preview screen</string>

    <!-- Message shown to user in a progress dialog when the app is in the process of refreshing the
         daily wallpaper. [CHAR LIMIT=none] -->
    <string name="refreshing_daily_wallpaper_dialog_message">
        Refreshing daily wallpaper&#8230;
    </string>

    <!-- Message shown to user in an alert dialog when the app failed to refresh the user's daily
         wallpaper. The message also suggests the user to check their network settings since network
         connection issues are a likely cause of the error. [CHAR LIMIT=none] -->
    <string name="refresh_daily_wallpaper_failed_message">
        Failed to refresh daily wallpaper. Please check your network connection and try again.
    </string>

    <!-- Content -->
    <!-- Title of the collection of wallpapers stored on the device itself. [CHAR LIMIT=30] -->
    <string name="on_device_wallpapers_category_title">On-device wallpapers</string>

    <!-- Short title of the collection of wallpapers stored on the device itself.
         [CHAR LIMIT=30] -->
    <string name="on_device_wallpapers_category_title_desktop">On device</string>

    <!-- Title of a wallpaper that comes with the Android device. [CHAR LIMIT=30] -->
    <string name="on_device_wallpaper_title">Android wallpaper</string>

    <!-- Title of the collection of "live" (animated) wallpapers. [CHAR LIMIT=30] -->
    <string name="live_wallpapers_category_title">Live wallpapers</string>

    <!-- Title of the collection of wallpapers from the user's own photo collection.
         [CHAR LIMIT=30] -->
    <string name="my_photos_category_title">My photos</string>

    <!-- Title of a wallpaper that is a user's own photo. [CHAR LIMIT=30] -->
    <string name="my_photos_generic_wallpaper_title">My photo</string>

    <!-- Title used for a wallpaper which does not have a unique title. [CHAR LIMIT=30] -->
    <string name="fallback_wallpaper_title">Wallpaper</string>

    <!-- Displayed when user selects a shortcut for an app that was uninstalled [CHAR_LIMIT=none]-->
    <string name="app_not_found">App isn\'t installed.</string>

    <!-- "Center" wallpaper position option where the custom photo wallpaper is centered to the
         device's desktop without any scaling. [CHAR_LIMIT=30] -->
    <string name="center_wallpaper_position">Center</string>

    <!-- "Center crop" wallpaper position option where the custom photo wallpaper is center cropped
         to the device's desktop so that the maximum area of the photo is shown without empty space.
         [CHAR_LIMIT=50] -->
    <string name="center_crop_wallpaper_position">Center crop</string>

    <!-- "Stretch" wallpaper position option where the custom photo wallpaper is scaled and
         stretched to fit the device's desktop exactly. [CHAR_LIMIT=30] -->
    <string name="stretch_wallpaper_position">Stretch</string>

    <!-- Logging -->
    <string name="live_wallpaper_collection_id" translatable="false">live_wallpapers</string>
    <string name="image_wallpaper_collection_id" translatable="false">image_wallpapers</string>
    <string name="on_device_wallpaper_collection_id" translatable="false">
      on_device_wallpapers
    </string>
    <string name="third_party_app_wallpaper_collection_id" translatable="false">
      third_party_app_wallpapers
    </string>

    <!-- Title for the toolbar when displaying a wallpaper preview. [CHAR LIMIT=30] -->
    <string name="preview">Preview</string>

    <!-- Label for the 'Info' tab of view pager in wallpaper preview activity. [CHAR_LIMIT=25] -->
    <string name="tab_info">Info</string>
    <!-- Label for the 'Customize' tab of view pager in wallpaper preview activity.
         [CHAR_LIMIT=25] -->
    <string name="tab_customize">Customize</string>

    <!-- Label for the 'Effects' tab of view pager in wallpaper preview activity.
         [CHAR_LIMIT=25] -->
    <string name="tab_effects">Effects</string>

    <!-- Label for the 'Share' tab of view pager in wallpaper preview activity.
     [CHAR_LIMIT=25] -->
    <string name="tab_share">Share</string>

    <!-- Generic label for the my photos action [CHAR_LIMIT=20] -->
    <string name="my_photos">My Photos</string>

    <!-- List item for configuring the current wallpaper [CHAR LIMIT=30] -->
    <string name="configure_wallpaper">Settings…</string>

    <!-- List item for deleting the current wallpaper [CHAR LIMIT=30] -->
    <string name="delete_live_wallpaper">Delete</string>

    <!-- List item for editing the current wallpaper [CHAR LIMIT=NONE] -->
    <string name="edit_live_wallpaper">Edit</string>

    <!-- Confirmation dialog. Shown after user selects to delete one wallpaper. [CHAR LIMIT=NONE] -->
    <string name="delete_wallpaper_confirmation">Delete this wallpaper from your device?</string>

    <!-- Content description of back button on the bottom action bar. [CHAR LIMIT=30] -->
    <string name="bottom_action_bar_back">Navigate up</string>

    <!-- Content description of edit button on the bottom action bar. [CHAR LIMIT=30] -->
    <string name="bottom_action_bar_edit">Edit</string>

    <!-- TODO(b/154299462): Separate downloadable related actions from WallpaperPicker. -->
    <!-- Content description of download button on the bottom action bar. [CHAR LIMIT=30] -->
    <string name="bottom_action_bar_download">Download</string>

    <!-- Content description of "slideshow wallpaper" button on the bottom action bar. [CHAR LIMIT=50] -->
    <string name="bottom_action_bar_slideshow_wallpaper">Slideshow Wallpaper</string>

    <!-- Apply button on the bottom action bar. [CHAR LIMIT=30] -->
    <string name="bottom_action_bar_apply">Apply</string>

    <!-- Accessibility label for paging indicator in theme picker preview [CHAR LIMIT=NONE] -->
    <string name="accessibility_preview_pager" msgid="3548503287402185430">Page <xliff:g name="current_page" example="1">%1$d</xliff:g> of <xliff:g name="num_pages" example="2">%2$d</xliff:g></string>
    <!-- Content description of the next button to bring user to the next preview page.[CHAR LIMIT=NONE] -->
    <string name="next_page_content_description" msgid="5290226604542300962">Next</string>
    <!-- Content description of the previous button to bring user to the previous preview page. [CHAR LIMIT=NONE] -->
    <string name="previous_page_content_description" msgid="6025726405430262788">Previous</string>

    <!--Name of metadata in the main launcher Activity which values contains the authority
    corresponding to a ContentProvider in launcher to provide available grids and
    allow for changing them -->
    <string name="grid_control_metadata_name" translatable="false">com.android.launcher3.grid.control</string>

    <!-- Title of the tool bar in the wallpaper picker. [CHAR LIMIT=19] -->
    <string name="wallpaper_title">Wallpaper</string>

    <!-- Content description of wallpaper preview card. [CHAR_LIMIT=40]-->
    <string name="wallpaper_preview_card_content_description">Wallpaper preview</string>

    <!-- Content description of lock screen wallpaper preview card. [CHAR_LIMIT=NONE]-->
    <string name="lock_wallpaper_preview_card_content_description">Lock screen wallpaper preview</string>

    <!-- Content description of home screen wallpaper preview card. [CHAR_LIMIT=NONE]-->
    <string name="home_wallpaper_preview_card_content_description">Home screen wallpaper preview</string>

    <!-- Error message of the wallpaper's collection doesn't exist. [CHAR_LIMIT=NONE] -->
    <string name="collection_not_exist_msg">The collection doesn\'t exist</string>

    <!-- Error message advising user to exit our of split screen in order to see preview. [CHAR_LIMIT=NONE] -->
    <string name="wallpaper_exit_split_screen">Please exit split screen mode and try again</string>

    <!-- Label for set wallpaper dialog positive button to set new wallpaper. [CHAR LIMIT=30] -->
    <string name="set_wallpaper_dialog_set_button">Set</string>

    <!-- Label for a cancel button of a dialog. [CHAR LIMIT=30] -->
    <string name="cancel">Cancel</string>

    <!-- Label for a button which lets user hide certain parts of the fullscreen preview UI. [CHAR LIMIT=30] -->
    <string name="hide_ui_preview_text">Hide UI Preview</string>

    <!-- Content description for Talkback to announce with UI preview is hidden. [CHAR LIMIT=50] -->
    <string name="hint_hide_ui_preview">UI is hidden in preview. Double tap to unhide</string>

    <!-- Label for a button which lets user show certain parts of the fullscreen preview UI. [CHAR LIMIT=30] -->
    <string name="show_ui_preview_text">Show UI Preview</string>

    <!-- Content description for Talkback to announce with UI preview is hidden. [CHAR LIMIT=NONE] -->
    <string name="hide_preview_controls_content_description">Preview controls are displayed. Double tap to hide</string>

    <!-- Label for a button which lets user hide certain parts of the fullscreen preview UI. [CHAR LIMIT=NONE] -->
    <string name="hide_preview_controls_action">Hide preview controls</string>

    <!-- Content description for Talkback to announce with UI preview is hidden. [CHAR LIMIT=NONE] -->
    <string name="show_preview_controls_content_description">Preview controls are hidden. Double tap to show</string>

    <!-- Label for a button which lets user show certain parts of the fullscreen preview UI. [CHAR LIMIT=NONE] -->
    <string name="show_preview_controls_action">Show preview controls</string>

    <!-- Label for action to show full preview without information [CHAR LIMIT=NONE] -->
    <string name="hide_wallpaper_info_action">Hide wallpaper info</string>

    <!-- Content description for Talkback to announce with UI preview is hidden. [CHAR LIMIT=50] -->
    <string name="hint_show_ui_preview">UI is displayed in preview. Double tap to hide</string>

    <!-- The title of wallpaper picker entry in new picker. [CHAR LIMIT=30]  -->
    <string name="wallpaper_picker_entry_title" msgid="7039652539125902659">Change wallpaper</string>

    <!-- Content description of wallpaper preview card (lockscreen). [CHAR_LIMIT=40]-->
    <string name="lockscreen_wallpaper_preview_card_content_description" msgid="8575577284424318765">Lockscreen wallpaper preview</string>

    <!-- Task affinity name for full screen preview's Activity stack -->
    <string name="full_screen_task_affinity" translatable="false">.fullscreen</string>

    <!-- Task affinity name for multi crop preview's Activity stack -->
    <string name="multi_crop_task_affinity" translatable="false">.multicrop</string>

    <!-- Label for a button / menu item that allows the user to apply the currently selected customization option. [CHAR LIMIT=20] -->
    <string name="apply_btn" msgid="7965877231041987336">Apply</string>

    <!-- Content description for customize panel is hidden. [CHAR_LIMIT=50] -->
    <string name="accessibility_customize_hidden">Customize hidden</string>

    <!-- Content description for customize panel is shown. [CHAR_LIMIT=50] -->
    <string name="accessibility_customize_shown">Customize shown</string>

    <!-- Content description for info panel is hidden. [CHAR_LIMIT=50] -->
    <string name="accessibility_info_hidden">Info hidden</string>

    <!-- Content description for info panel is shown. [CHAR_LIMIT=50] -->
    <string name="accessibility_info_shown">Info shown</string>

    <!-- Description of navigation to settings. [CHAR LIMIT=NONE] -->
    <string name="settings_snackbar_description">Please enable files and media in settings.</string>

    <!-- Label for a button which lets user try to navigation to settings. [CHAR LIMIT=25] -->
    <string name="settings_snackbar_enable">Enable</string>

    <!-- Label for a button which lets user try to open their photos. [CHAR LIMIT=40] -->
    <string name="open_my_photos">Open My Photos</string>

    <!--
    Name of the authority corresponding to a ContentProvider in system UI that can provide remote
    rendering of a preview of the lock screen.
    -->
    <string name="lock_screen_preview_provider_authority" translatable="false">com.android.systemui.customization</string>

    <!--
    Label for a navigational tab/button that takes the user to a UI that lets them customize the
    lock screen.

    [CHAR LIMIT=24].
    -->
    <string name="lock_screen_tab">Lock screen</string>

    <!--
    Label for a navigational tab/button that takes the user to a UI that lets them customize the
    home screen.

    [CHAR LIMIT=24].
    -->
    <string name="home_screen_tab">Home screen</string>

    <!--
    Label for button that lets the user reset the changes they have made.

    [CHAR LIMIT=12].
    -->
    <string name="reset">Reset</string>

    <!--
    Title for dialog confirming with the user that they really wish to reset the customizations they
    applied to the home and lock screens.

    [CHAR LIMIT=32].
    -->
    <string name="reset_confirmation_dialog_title">Reset changes?</string>

    <!--
    Message for dialog confirming with the user that they really wish to reset the customizations
    they applied to the home and lock screens.

    [CHAR LIMIT=128].
    -->
    <string name="reset_confirmation_dialog_message">Your changes won\'t be saved</string>

    <!--
    Label for button that lets the user navigate to a full-screen experience of selecting
    wallpapers.

    [CHAR LIMIT=128].
    -->
    <string name="more_wallpapers">More wallpapers</string>

    <!--
     Accessibility label for recent wallpaper collection items

    [CHAR LIMIT=128].
    -->
    <string name="recents_wallpaper_label">%1$s, %2$d</string>

    <!--
     Default wallpaper title for wallpapers which do not have an inherent title

    [CHAR LIMIT=128].
    -->
    <string name="default_wallpaper_title">Wallpaper</string>

    <!--
     Tooltip label that appears over the small wallpaper preview, where a user can tap to enter the
     full screen preview to adjust the wallpaper crop

    [CHAR LIMIT=128].
    -->
    <string name="small_preview_tooltip">Tap to edit your photo</string>

    <!--
     Tooltip label that appears over the full wallpaper preview, where a user can adjust the
     wallpaper crop

    [CHAR LIMIT=128].
    -->
    <string name="full_preview_tooltip">Adjust the position, scale, and angle of your photos</string>

</resources>
