<?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:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="telecommAppLabel" product="default" msgid="9166784827254469057">"通话管理"</string>
    <string name="userCallActivityLabel" product="default" msgid="5415173590855187131">"电话"</string>
    <string name="unknown" msgid="6878797917991465859">"未知"</string>
    <string name="notification_missedCallTitle" msgid="7554385905572364535">"未接电话"</string>
    <string name="notification_missedCallsTitle" msgid="1361677948941502522">"未接电话"</string>
    <string name="notification_missedCallsMsg" msgid="4575787816055205600">"<xliff:g id="NUM_MISSED_CALLS">%s</xliff:g> 个未接电话"</string>
    <string name="notification_missedCallTicker" msgid="504686252427747209">"来自<xliff:g id="MISSED_CALL_FROM">%s</xliff:g>的未接电话"</string>
    <string name="notification_missedCall_call_back" msgid="2684890353590890187">"回拨"</string>
    <string name="notification_missedCall_message" msgid="3049928912736917988">"短信"</string>
    <string name="accessibility_call_muted" msgid="2776111226185342220">"通话已静音。"</string>
    <string name="accessibility_speakerphone_enabled" msgid="1988512040421036359">"扬声器已启用。"</string>
    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"现在无法接听。有什么事吗？"</string>
    <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"我马上会打给你。"</string>
    <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"我稍后会再打给你。"</string>
    <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"现在无法接听。能稍后再打给我吗？"</string>
    <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"快速回复"</string>
    <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"修改快速回复"</string>
    <string name="respond_via_sms_setting_summary" msgid="9150281183930613065"></string>
    <string name="respond_via_sms_edittext_dialog_title" msgid="20379890418289778">"快速回复"</string>
    <string name="respond_via_sms_confirmation_format" msgid="7229149977515784269">"讯息已发送至 <xliff:g id="PHONE_NUMBER">%s</xliff:g>。"</string>
    <string name="enable_account_preference_title" msgid="2021848090086481720">"通话帐号"</string>
    <string name="outgoing_call_not_allowed_user_restriction" msgid="6872406278300131364">"只能拨打紧急呼救电话。"</string>
    <string name="outgoing_call_not_allowed_no_permission" msgid="1996571596464271228">"此应用没有电话权限，无法拨出电话。"</string>
    <string name="outgoing_call_error_no_phone_number_supplied" msgid="1940125199802007505">"要拨打电话，请输入有效的电话号码。"</string>
    <string name="duplicate_video_call_not_allowed" msgid="3749211605014548386">"目前无法添加通话。"</string>
    <string name="video_call_not_allowed_if_tty_enabled" msgid="7593649283571253283">"要进行视频通话，请停用 TTY 模式。"</string>
    <string name="no_vm_number" msgid="4164780423805688336">"缺少语音信箱号码"</string>
    <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM卡上未存储语音信箱号码。"</string>
    <string name="add_vm_number_str" msgid="4676479471644687453">"添加号码"</string>
    <string name="change_default_dialer_dialog_title" msgid="4430590714918044425">"要更改默认拨号器应用吗？"</string>
    <string name="change_default_dialer_with_previous_app_set_text" msgid="3213396537499337949">"要使用<xliff:g id="NEW_APP">%1$s</xliff:g>（而非<xliff:g id="CURRENT_APP">%2$s</xliff:g>）作为您的默认拨号器应用吗？"</string>
    <string name="change_default_dialer_no_previous_app_set_text" msgid="7608426684114545221">"要使用<xliff:g id="NEW_APP">%s</xliff:g>作为您的默认拨号器应用吗？"</string>
</resources>
