<?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">
    <!--
        This is the short description of a permission associated with the
        Bluetooth Share Manager. It is displayed as part of the description of
        any application that was granted that permission. This specific
        permission controls access to the Bluetooth Share Manager by
        applications that initiate Bluetooth share.
    -->
    <string name="permlab_bluetoothShareManager">Access download manager.</string>
    <!--
        This is the long description of a permission associated with the
        Android Download Manager. It is displayed as part of the description
        of any application that was granted that permission. This specific
        permission controls access to the Download Manager by applications
        that initiate downloads.
    -->
    <string name="permdesc_bluetoothShareManager">Allows the app to access the
        BluetoothShare manager and use it to transfer files. </string>

    <string name="permlab_bluetoothWhitelist">Whitelist bluetooth device access.</string>

    <string name="permdesc_bluetoothWhitelist">Allows the app to temporarily whitelist
        a Bluetooth device, allowing that device to send files to this device without user
        confirmation.</string>

    <!-- string showed on "Share picutre via" dialog -->
    <string name="bt_share_picker_label">Bluetooth</string>

    <!-- string for "unknown device" -->
    <string name="unknown_device">Unknown device</string>

    <!-- string for "unknown" phone number" -->
    <string name="unknownNumber">Unknown</string>

    <!-- string for "the title of airplane mode error" -->
    <string name="airplane_error_title">Airplane mode</string>
    <!-- string for "error message in airplane mode" -->
    <string name="airplane_error_msg">You can\'t use Bluetooth in Airplane mode.</string>

    <!-- Activate Bluetooth Confirmation Dialog -->
    <!--Title -->
    <string name="bt_enable_title"></string>
    <!--Line 1 -->
    <string name="bt_enable_line1">To use Bluetooth services, you must first turn on Bluetooth.</string>
    <!--Line 2 -->
    <string name="bt_enable_line2">Turn on Bluetooth now?</string>
    <!-- Label for a cancel button. -->
    <string name="bt_enable_cancel">Cancel</string>
    <!-- Label for a confirm button.-->
    <string name="bt_enable_ok">Turn on</string>

    <!-- Bluetooth File Transfer Acceptance Dialog -->
    <!--Title -->
    <string name="incoming_file_confirm_title">File transfer</string>
    <!--content -->
    <string name="incoming_file_confirm_content">Accept incoming file? </string>
    <!-- Label for a cancel button. -->
    <string name="incoming_file_confirm_cancel">Decline</string>
    <!-- Label for a confirm button.-->
    <string name="incoming_file_confirm_ok">Accept</string>
    <!-- Label for timeout OK button.-->
    <string name="incoming_file_confirm_timeout_ok">OK</string>
    <!-- content for timeout-->
    <string name="incoming_file_confirm_timeout_content">There was a timeout while accepting an incoming file from \u0022<xliff:g id="sender">%1$s</xliff:g>\u0022</string>

    <!-- Bluetooth File Transfer Acceptance Notification item -->
    <string name="incoming_file_confirm_Notification_title">Incoming file</string>
    <string name="incoming_file_confirm_Notification_content"><xliff:g id="sender">%1$s</xliff:g> is ready to send <xliff:g id="file">%2$s</xliff:g></string>

    <!-- Inbound File Transfer Progress Notification item -->
    <!-- label for the notification item of receiving file -->
    <string name="notification_receiving">Bluetooth share: Receiving <xliff:g id="file">%1$s</xliff:g></string>
    <!-- label for the notification item of received file -->
    <string name="notification_received">Bluetooth share: Received <xliff:g id="file">%1$s</xliff:g></string>
    <!-- label for the notification item of failed receiving file -->
    <string name="notification_received_fail">Bluetooth share: File <xliff:g id="file">%1$s</xliff:g> not received</string>

    <!-- Outbound File Transfer Progress Notification item -->
    <!-- label for the notification item of sending file -->
    <string name="notification_sending">Bluetooth share: Sending <xliff:g id="file">%1$s</xliff:g></string>
    <!-- label for the notification item of sent file -->
    <string name="notification_sent">Bluetooth share: Sent <xliff:g id="file">%1$s</xliff:g></string>
    <!-- label for the notification item of sent file -status -->
    <string name="notification_sent_complete">100% complete</string>
    <!-- label for the notification item of failed sending file -->
    <string name="notification_sent_fail">Bluetooth share: File <xliff:g id="file">%1$s</xliff:g> not sent</string>

    <!-- Bluetooth Download Progress Dialog -->
    <!--Title -->
    <string name="download_title">File transfer</string>
    <!--Line 1 -->
    <string name="download_line1">From: \u0022<xliff:g id="sender">%1$s</xliff:g>\u0022</string>
    <!--Line 2 -->
    <string name="download_line2">File: <xliff:g id="file">%1$s</xliff:g></string>
    <!--Line 3 -->
    <string name="download_line3">File size: <xliff:g id="size">%1$s</xliff:g></string>
    <!--Line 4 -->
    <string name="download_line4" />
    <string name="download_line5">Receiving file\u2026</string>
    <!-- Label for a cancel button. -->
    <string name="download_cancel">Stop</string>
    <!-- Label for a hide button.-->
    <string name="download_ok">Hide</string>
    <!--Line 1 -->
    <string name="incoming_line1">From</string>
    <!--Line 2 -->
    <string name="incoming_line2">Filename</string>
    <!--Line 3 -->
    <string name="incoming_line3">Size</string>

    <!-- Bluetooth failed Download  Dialog -->
    <!--Line 1  -->
    <string name="download_fail_line1">File not received</string>
    <!--Line 2  -->
    <string name="download_fail_line2">File: <xliff:g id="file">%1$s</xliff:g></string>
    <!--Line 3  -->
    <string name="download_fail_line3">Reason: <xliff:g id="reason">%1$s</xliff:g></string>
    <!-- Label for ok button.-->
    <string name="download_fail_ok">OK</string>

    <!-- Bluetooth Successful Download  Dialog -->
    <!--Line 4 in "Bluetooth Download Progress Dialog" -->
    <string name="download_succ_line5">File received</string>
    <!-- Label for a OK button.-->
    <string name="download_succ_ok">Open</string>

    <!-- Bluetooth Upload Progress Dialog -->
    <string name="upload_line1">To: \u0022<xliff:g id="recipient">%1$s</xliff:g>\u0022</string>
    <string name="upload_line3">File type: <xliff:g id="type">%1$s</xliff:g> (<xliff:g id="size">%2$s</xliff:g>)</string>
    <string name="upload_line5">Sending file\u2026</string>

    <!-- Bluetooth Successful Upload Progress Dialog -->
    <!--Line 4 -->
    <string name="upload_succ_line5">File sent</string>
    <!-- Label for a confirm button.-->
    <string name="upload_succ_ok">OK</string>

    <!-- Bluetooth Failed Upload File Transfer Dialog -->
    <string name="upload_fail_line1">The file wasn\'t sent to \u0022<xliff:g id="recipient">%1$s</xliff:g>\u0022.</string>
    <string name="upload_fail_line1_2">File: <xliff:g id="file">%1$s</xliff:g></string>
    <!-- Label for a try again button.-->
    <string name="upload_fail_ok">Try again</string>
    <!-- Label for a cancel button.-->
    <string name="upload_fail_cancel">Close</string>

    <!-- Bluetooth error dialog -->
    <string name="bt_error_btn_ok">OK</string>
    <string name="unknown_file">Unknown file</string>
    <string name="unknown_file_desc">There\'s no app to handle this type of file. \n</string>
    <string name="not_exist_file">No file</string>
    <string name="not_exist_file_desc">The file doesn\'t exist. \n</string>

    <!-- Bluetooth  Enabling progress dialog -->
    <string name="enabling_progress_title">Please wait\u2026</string>
    <string name="enabling_progress_content">Turning on Bluetooth\u2026</string>

    <!-- Bluetooth Toast Message -->
    <string name="bt_toast_1">The file will be received. Check progress in the Notifications panel.</string>
    <string name="bt_toast_2">The file can\'t be received.</string>
    <string name="bt_toast_3">Stopped receiving file from \u0022<xliff:g id="sender">%1$s</xliff:g>\u0022</string>
    <string name="bt_toast_4">Sending file to \u0022<xliff:g id="recipient">%1$s</xliff:g>\u0022</string>
    <string name="bt_toast_5">Sending <xliff:g id="number">%1$s</xliff:g> files to \u0022<xliff:g id="recipient">%2$s</xliff:g>\u0022</string>
    <string name="bt_toast_6">Stopped sending file to \u0022<xliff:g id="recipient">%1$s</xliff:g>\u0022</string>

    <!-- Bluetooth System Messages [CHAR LIMIT=NONE] -->
    <string name="bt_sm_2_1" product="nosdcard">There isn\'t enough space in USB storage to save the file from \u0022<xliff:g id="sender">%1$s</xliff:g>\u0022</string>
    <!-- Bluetooth System Messages -->
    <string name="bt_sm_2_1" product="default">There isn\'t enough space on the SD card to save the file from \u0022<xliff:g id="sender">%1$s</xliff:g>\u0022</string>
    <string name="bt_sm_2_2">Space needed: <xliff:g id="size">%1$s</xliff:g></string>

    <string name="ErrorTooManyRequests">Too many requests are being processed. Try again later.</string>

    <!-- Bluetooth Transfer Failure Reason -->
    <string name="status_pending">File transfer not started yet.</string>
    <string name="status_running">File transfer is ongoing.</string>
    <string name="status_success">File transfer completed successfully.</string>
    <string name="status_not_accept">Content isn\'t supported.</string>
    <string name="status_forbidden">Transfer forbidden by target device.</string>
    <string name="status_canceled">Transfer canceled by user.</string>
    <string name="status_file_error">Storage issue.</string>
    <!-- Shown when USB storage cannot be found.  [CHAR LIMIT=NONE] -->
    <string name="status_no_sd_card" product="nosdcard">No USB storage.</string>
    <string name="status_no_sd_card" product="default">No SD card. Insert an SD card to save transferred files.</string>
    <string name="status_connection_error">Connection unsuccessful.</string>
    <string name="status_protocol_error">Request can\'t be handled correctly.</string>
    <string name="status_unknown_error">Unknown error.</string>

    <!-- Bluetooth OPP Live Folder -->
    <string name="btopp_live_folder">Bluetooth received</string>

    <!-- Bluetooth OPP Transfer History -->
    <string name="opp_notification_group">Bluetooth Share</string>
    <string name="download_success"> <xliff:g id="file_size">%1$s</xliff:g> Received complete.</string>
    <string name="upload_success"> <xliff:g id="file_size">%1$s</xliff:g> Sent complete.</string>
    <string name="inbound_history_title">Inbound transfers</string>
    <string name="outbound_history_title">Outbound transfers</string>
    <string name="no_transfers">Transfer history is empty.</string>
    <string name="transfer_clear_dlg_msg">All items will be cleared from the list.</string>
    <string name="outbound_noti_title">Bluetooth share: Sent files</string>
    <string name="inbound_noti_title">Bluetooth share: Received files</string>
    <plurals name="noti_caption_unsuccessful">
        <item quantity="one"><xliff:g id="unsuccessful_number">%1$d</xliff:g> unsuccessful.</item>
        <item quantity="other"><xliff:g id="unsuccessful_number">%1$d</xliff:g> unsuccessful.</item>
    </plurals>
    <plurals name="noti_caption_success">
        <item quantity="one"><xliff:g id="successful_number">%1$d</xliff:g> successful, %2$s</item>
        <item quantity="other"><xliff:g id="successful_number">%1$d</xliff:g> successful, %2$s</item>
    </plurals>

    <string name="transfer_menu_clear_all">Clear list</string>
    <string name="transfer_menu_open">Open</string>
    <string name="transfer_menu_clear">Clear from list</string>
    <string name="transfer_clear_dlg_title">Clear</string>

     <!-- Do not translate. file name used for sharing. -->
    <string name="bluetooth_share_file_name" translate="false">bluetooth_content_share</string>

    <!-- Used to run Bluetooth.apk in another process if needed -->
    <!-- Do not translate. android:sharedUserId string of this application. -->
    <string name="sharedUserId" translate="false"><xliff:g id="x" /></string>
    <!-- Do not translate. android:process of this application. -->
    <string name="process" translate="false"><xliff:g id="x" /></string>


    <string name="bluetooth_map_settings_save">Save</string>
    <string name="bluetooth_map_settings_cancel">Cancel</string>
    <string name="bluetooth_map_settings_intro">Select the accounts you want to share through Bluetooth. You still have to accept any access to the accounts when connecting.</string>
    <string name="bluetooth_map_settings_count">Slots left:</string>
    <string name="bluetooth_map_settings_app_icon">Application Icon</string>
    <string name="bluetooth_map_settings_title">Bluetooth Message Sharing Settings</string>
    <string name="bluetooth_map_settings_no_account_slots_left">Cannot select account. 0 slots left</string>
    <string name="bluetooth_connected">Bluetooth audio connected</string>
    <string name="bluetooth_disconnected">Bluetooth audio disconnected"</string>
    <string name="a2dp_sink_mbs_label">Bluetooth Audio</string>
</resources>
