<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 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">
    <!-- Official label of the Telecomm/Phone app, as seen in "Manage Applications"
         and other settings UIs. This is the "app name" used in notification, recents,
         and app info screens. -->
    <string name="telecommAppLabel" product="default">Phone</string>

    <!-- Name for an "unknown" caller. -->
    <string name="unknown">Unknown</string>

    <!-- Notification strings -->
    <!-- Missed call notification label, used when there's exactly one missed call -->
    <string name="notification_missedCallTitle">Missed call</string>
    <!-- Missed call notification label, used when there are two or more missed calls -->
    <string name="notification_missedCallsTitle">Missed calls</string>
    <!-- Missed call notification message used when there are multiple missed calls -->
    <string name="notification_missedCallsMsg"><xliff:g id="num_missed_calls">%s</xliff:g> missed calls</string>
    <!-- Missed call notification message used for a single missed call, including
         the caller-id info from the missed call -->
    <string name="notification_missedCallTicker">Missed call from <xliff:g id="missed_call_from">%s</xliff:g></string>
    <!-- Message for "call back" Action, which is displayed in the missed call notificaiton.
         The user will be able to call back to the person or the phone number.
         [CHAR LIMIT=60] -->
    <string name="notification_missedCall_call_back">Call back</string>
    <!-- Message for "reply via sms" action, which is displayed in the missed call notification.
         The user will be able to send text messages using the phone number.
         [CHAR LIMIT=60] -->
    <string name="notification_missedCall_message">Message</string>

    <!-- Content description of the call muted notification icon for
         accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_call_muted">Call muted.</string>

    <!-- Content description of the speakerphone enabled notification icon for
         accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_speakerphone_enabled">Speakerphone enabled.</string>

    <!-- Canned response for the "Respond via SMS" feature for incoming calls. [CHAR LIMIT=35] -->
    <string name="respond_via_sms_canned_response_1">Can\'t talk now. What\'s up?</string>
    <!-- Canned response for the "Respond via SMS" feature for incoming calls. [CHAR LIMIT=35] -->
    <string name="respond_via_sms_canned_response_2">I\'ll call you right back.</string>
    <!-- Canned response for the "Respond via SMS" feature for incoming calls. [CHAR LIMIT=35] -->
    <string name="respond_via_sms_canned_response_3">I\'ll call you later.</string>
    <!-- Canned response for the "Respond via SMS" feature for incoming calls. [CHAR LIMIT=35] -->
    <string name="respond_via_sms_canned_response_4">Can\'t talk now. Call me later?</string>

    <!-- Title of settings screen for managing the "Respond via SMS" feature. [CHAR LIMIT=30] -->
    <string name="respond_via_sms_setting_title">Quick responses</string>
    <!-- Slightly more verbose title of settings screen for managing the
         "Respond via SMS" feature. [CHAR LIMIT=30] -->
    <string name="respond_via_sms_setting_title_2">Edit quick responses</string>
    <!-- Settings summary string for the "Respond via SMS" feature. [CHAR LIMIT=40] -->
    <string name="respond_via_sms_setting_summary"></string>
    <!-- Dialog title when changing a string for the "Respond via SMS" feature. [CHAR LIMIT=30] -->
    <string name="respond_via_sms_edittext_dialog_title">Quick response</string>
    <!-- Menu option in  "Respond via SMS" that allows user to reset the default
         activity used to handle "Respond via SMS" [CHAR LIMIT=30] -->
    <string name="respond_via_sms_menu_reset_default_activity">Reset default app</string>

    <!-- "Respond via SMS": Confirmation message shown after sending
        a text response. [CHAR LIMIT=40] -->
    <string name="respond_via_sms_confirmation_format">Message sent to <xliff:g id="phone_number">%s</xliff:g>.</string>

    <!-- Title for phone accounts settings screen -->
    <string name="phone_account_preferences_title">Phone account settings</string>

    <!-- Title for setting to select default outgoing phone account -->
    <string name="default_outgoing_account_title">Default outgoing account</string>

    <!-- Title for setting to select SIM call manager account -->
    <string name="sim_call_manager_account">Wi-Fi calling account</string>

    <!-- Indication to "ask every time" for accounts when making a call -->
    <string name="account_ask_every_time">Ask every time</string>

    <!-- Indication to not use a SIM call manager -->
    <string name="do_not_use_sim_call_manager">Do not use Wi-Fi calling</string>

    <!-- Message indicating that the user is not allowed to make non-emergency outgoing phone calls
         due to a user restriction -->
    <string name="outgoing_call_not_allowed">This user is not allowed to make non-emergency phone calls</string>

    <!-- Call failure message displayed in an error dialog used to indicate that a phone number was not provided -->
    <string name="outgoing_call_error_no_phone_number_supplied">Call not sent, no valid number entered.</string>

    <!-- missing voicemail number -->
    <!-- Title of the "Missing voicemail number" dialog -->
    <string name="no_vm_number">Missing voicemail number</string>
    <!-- Body text of the "Missing voicemail number" dialog -->
    <string name="no_vm_number_msg">No voicemail number is stored on the SIM card.</string>
    <!-- Button label on the "Missing voicemail number" dialog -->
    <string name="add_vm_number_str">Add number</string>

    <!-- DO NOT TRANSLATE. Label for test Subscription 0. -->
    <string name="test_account_0_label">Q Mobile</string>
    <!-- DO NOT TRANSLATE. Label for test Subscription 1. -->
    <string name="test_account_1_label">Market Wireless</string>
    <!-- DO NOT TRANSLATE. Label for test Subscription 2. -->
    <string name="test_account_2_label">Sonoma Circles Talk Plus</string>
    <!-- DO NOT TRANSLATE. Label for test Subscription 3. -->
    <string name="test_account_3_label">Bay Voice Chat Pro</string>

    <!-- DO NOT TRANSLATE. Short description for test Subscription 0. -->
    <string name="test_account_0_short_description">Account with Q Mobile</string>
    <!-- DO NOT TRANSLATE. Short description for test Subscription 1. -->
    <string name="test_account_1_short_description">Account with Market Wireless</string>
    <!-- DO NOT TRANSLATE. Short description for test Subscription 2. -->
    <string name="test_account_2_short_description">Talk to everyone in your Circles!</string>
    <!-- DO NOT TRANSLATE. Short description for test Subscription 3. -->
    <string name="test_account_3_short_description">Chat with Chat Network users</string>

    <!-- DO NOT TRANSLATE. Hardcoded number used for restricted incoming phone numbers. -->
    <string name="handle_restricted">RESTRICTED</string>
</resources>
