<?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:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="app_name" msgid="3369897473091780760">"SIM 工具箱"</string>
    <string name="menu_end_session" msgid="9087134977926181033">"結束"</string>
    <string name="help" msgid="1290449694178547017">"說明"</string>
    <string name="menu_back" msgid="7136697148453089659">"上一頁"</string>
    <string name="service_name" msgid="6767598098497885828">"服務名稱"</string>
    <string name="stk_no_service" msgid="1905632157498220090">"沒有服務"</string>
    <string name="button_ok" msgid="7914432227722142434">"確定"</string>
    <string name="button_cancel" msgid="137404731092374681">"取消"</string>
    <string name="button_yes" msgid="755426085739326674">"是"</string>
    <string name="button_no" msgid="564962410861983724">"否"</string>
    <string name="alphabet" msgid="9068318253752197929">"字母"</string>
    <string name="digits" msgid="7391551783961486324">"數字與符號 (0-9、*、#、+)"</string>
    <string name="default_call_setup_msg" msgid="6490156065165946828">"通話中…"</string>
    <string name="default_setup_call_msg" msgid="5819132588246209714">"正在設定通話"</string>
    <string name="stk_app_state" msgid="6274976677198791616">"應用程式狀態"</string>
    <string name="enable_app" msgid="1980493713217690903">"已啟用"</string>
    <string name="disable_app" msgid="2298201833946002357">"已停用"</string>
    <string name="stk_dialog_title" msgid="1047336800509270520">"SIM 工具包"</string>
    <string name="default_tone_dialog_msg" msgid="8354658178971283852">"正在播放音效"</string>
    <string name="default_open_channel_msg" msgid="2043011408855389673">"開啟頻道？"</string>
    <string name="default_send_data_msg" msgid="6602200147341683792">"傳送資料"</string>
    <string name="default_receive_data_msg" msgid="5545535916402887726">"接收資料"</string>
    <string name="default_close_channel_msg" msgid="6320648502339362951">"頻道已關閉"</string>
    <string name="stk_dialog_accept" msgid="2899431442032305374">"是"</string>
    <string name="stk_dialog_reject" msgid="1455086565615694879">"否"</string>
    <string name="no_sim_card_inserted" msgid="3177955793136053581">"請插入 SIM 卡以啟動 SIM 工具包。"</string>
    <string name="stk_channel_name" msgid="3945765236566954372">"行動服務訊息"</string>
</resources>
