<?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 menyusi"</string>
    <string name="menu_end_session" msgid="9087134977926181033">"Sessiyani yakunlash"</string>
    <string name="help" msgid="1290449694178547017">"Yordam"</string>
    <string name="menu_back" msgid="7136697148453089659">"Orqaga"</string>
    <string name="service_name" msgid="6767598098497885828">"Xizmat nomi"</string>
    <string name="stk_no_service" msgid="1905632157498220090">"Xizmat mavjud emas"</string>
    <string name="button_ok" msgid="7914432227722142434">"OK"</string>
    <string name="button_cancel" msgid="137404731092374681">"Bekor qilish"</string>
    <string name="button_yes" msgid="755426085739326674">"Ha"</string>
    <string name="button_no" msgid="564962410861983724">"Yo‘q"</string>
    <string name="alphabet" msgid="9068318253752197929">"Alifbo"</string>
    <string name="digits" msgid="7391551783961486324">"(0-9, *, #, +) raqamlari"</string>
    <string name="default_call_setup_msg" msgid="6490156065165946828">"Qo‘ng‘iroq amalda…"</string>
    <string name="default_setup_call_msg" msgid="5819132588246209714">"Qo‘ng‘iroq sozlanmoqda"</string>
    <string name="stk_app_state" msgid="6274976677198791616">"Ilova holati"</string>
    <string name="enable_app" msgid="1980493713217690903">"Yoniq"</string>
    <string name="disable_app" msgid="2298201833946002357">"Oʻchiq"</string>
    <string name="stk_dialog_title" msgid="1047336800509270520">"SIM menyusi"</string>
    <string name="default_tone_dialog_msg" msgid="8354658178971283852">"Signal ijrosi"</string>
    <string name="default_open_channel_msg" msgid="2043011408855389673">"Kanal ochilsinmi?"</string>
    <string name="default_send_data_msg" msgid="6602200147341683792">"Ma’lumot yuborilmoqda"</string>
    <string name="default_receive_data_msg" msgid="5545535916402887726">"Ma’lumot qabul qilinmoqda"</string>
    <string name="default_close_channel_msg" msgid="6320648502339362951">"Kanal yopilgan"</string>
    <string name="stk_dialog_accept" msgid="2899431442032305374">"Ha"</string>
    <string name="stk_dialog_reject" msgid="1455086565615694879">"Yo‘q"</string>
    <string name="no_sim_card_inserted" msgid="3177955793136053581">"SIM karta menyusini ochish uchun SIM kartani soling."</string>
    <string name="stk_channel_name" msgid="3945765236566954372">"Mobil xizmat xabarlari"</string>
</resources>
