<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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 the application that appears in the launcher [CHAR LIMIT=15] -->
    <string name="app_label">Downloads</string>
    <!-- The title that appears at the top of the activity listing downloads sorted by date [CHAR LIMIT=40] -->
    <string name="download_title_sorted_by_date">Downloads - Sorted by date</string>
    <!-- The title that appears at the top of the activity listing downloads sorted by size [CHAR LIMIT=40] -->
    <string name="download_title_sorted_by_size">Downloads - Sorted by size</string>

    <!-- Appears in lieu of the list of downloads if there are no downloads to view
         [CHAR LIMIT=200] -->
    <string name="no_downloads">No downloads.</string>

    <!-- Default title for an item in the download list for which no title was provided by the app.
         [CHAR LIMIT=20] -->
    <string name="missing_title">&lt;Unknown&gt;</string>

    <!-- Button to display sort-by-size option [CHAR LIMIT=25] -->
    <string name="button_sort_by_size">Sort by size</string>
    <!-- Button to display sort-by-date option [CHAR LIMIT=25] -->
    <string name="button_sort_by_date">Sort by date</string>

    <!-- Status messages -->

    <!-- Status indicating that the download has been queued to start in the future.  Appears for an
         individual item in the download list.  [CHAR LIMIT=11] -->
    <string name="download_queued">Queued</string>
    <!-- Status indicating that the system is currently downloading the file.  Appears for an
         individual item in the download list.  [CHAR LIMIT=11] -->
    <string name="download_running">In progress</string>
    <!-- Status indicating that the download has completed successfully. Appears for an individual
         item in the download list.  [CHAR LIMIT=11] -->
    <string name="download_success">Complete</string>
    <!-- Status indicating that the download has ended without completing successfully.  Appears for
         an individual item in the download list.  [CHAR LIMIT=11] -->
    <string name="download_error">Unsuccessful</string>

    <!-- Dialog/toast messages -->

    <!-- Title of dialog that is shown when the user clicks a download for which no file is
         available, either because the download hasn't started or because the download failed
         [CHAR LIMIT=25] -->
    <string name="dialog_title_not_available">Couldn\'t download</string>
    <!-- Text for dialog when user clicks on a download that failed [CHAR LIMIT=200] -->
    <string name="dialog_failed_body">Do you want to retry downloading the file later
          or delete it from the queue?</string>
    <!-- Title for dialog when user clicks on a download that has not yet begun, but will be started
         in the future. [CHAR LIMIT=25] -->
    <string name="dialog_title_queued_body">File in queue</string>
    <!-- Text for dialog when user clicks on a download that has not yet begun, but will be started
         in the future. [CHAR LIMIT=200] -->
    <string name="dialog_queued_body">This file is queued for future download so isn\'t available yet.</string>
    <!-- Text for dialog when user clicks on a completed download but the file is missing
         [CHAR LIMIT=200] -->
    <string name="dialog_file_missing_body">Can\'t find the downloaded file.</string>
    <!-- Text for dialog when user clicks on a download that failed due to insufficient space on
         external storage [CHAR LIMIT=200] -->
    <string name="dialog_insufficient_space_on_external">Can\'t finish download. There isn\'t
        enough space on external storage.</string>
    <!-- Text for dialog when user clicks on a download that failed due to insufficient space on
         the internal download cache [CHAR LIMIT=200] -->
    <string name="dialog_insufficient_space_on_cache">Can\'t finish download. There isn\'t enough
        space on internal download storage.</string>
    <!-- Text for dialog when user clicks on a download that failed because it was interrupted and
         the server doesn't support resuming downloads [CHAR LIMIT=200] -->
    <string name="dialog_cannot_resume">Download was interrupted and can\'t be resumed.</string>
    <!-- Text for dialog when user clicks on a download that failed because the requested
         destination file already exists [CHAR LIMIT=200] -->
    <string name="dialog_file_already_exists">Can\'t download. The destination file already exists.
    </string>
    <!-- Text for dialog when user clicks on a download that failed because it was requested to go
         on the external media, which is not mounted [CHAR LIMIT=200] -->
    <string name="dialog_media_not_found">Can\'t download. The external media isn\'t available.
    </string>
    <!-- Text for a toast appearing when a user clicks on a completed download, informing the user
         that there is no application on the device that can open the file that was downloaded
         [CHAR LIMIT=200] -->
    <string name="download_no_application_title">Can\'t open file</string>

    <!-- Buttons -->

    <!-- Text for button to remove the entry for a download that has not yet begun or that has
         failed [CHAR LIMIT=25] -->
    <string name="remove_download">Remove</string>
    <!-- Text for button to delete a download that has completed, or to delete multiple download
         entries [CHAR LIMIT=25] -->
    <string name="delete_download">Delete</string>
    <!-- Text for button to keep a download that has not yet begun [CHAR LIMIT=25] -->
    <string name="keep_queued_download">Keep</string>
    <!-- Text for button to cancel a download that is currently in progress [CHAR LIMIT=25] -->
    <string name="cancel_running_download">Cancel</string>
    <!-- Text for button appearing in a dialog to restart a download, either one that failed or one
         for which the downloaded file is now missing [CHAR LIMIT=25] -->
    <string name="retry_download">Retry</string>
    <!-- Text for button appearing in the pop-up selection menu to deselect all currently selected
    downloads in the download list [CHAR LIMIT=25] -->
    <string name="deselect_all">Deselect all</string>
    <!-- Text for menu to select all downloads in the download list [CHAR LIMIT=25] -->
    <string name="select_all">Select all</string>
    <!-- number of downloads selected [CHAR LIMIT=50] -->
    <string name="selected_count">Selected <xliff:g id="number" example="3">%1$d</xliff:g> out of <xliff:g id="total" example="15">%2$d</xliff:g></string>
    <!-- title shown when displaying list of apps to choose from when share is clicked on
        [CHAR LIMIT = 20] -->
    <string name="download_share_dialog">Share via</string>

</resources>
