<?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="app_label" msgid="2783841764617238354">"Құжаттар"</string>
    <string name="title_open" msgid="4353228937663917801">"Келесі тармақ арқылы ашу:"</string>
    <string name="title_save" msgid="2433679664882857999">"Келесі файлға сақтау:"</string>
    <string name="menu_create_dir" msgid="5947289605844398389">"Қалта жасақтау"</string>
    <string name="menu_grid" msgid="6878021334497835259">"Торлы көрініс"</string>
    <string name="menu_list" msgid="7279285939892417279">"Тізім көрінісі"</string>
    <string name="menu_sort" msgid="7677740407158414452">"Белгіге қарай сұрыптау"</string>
    <string name="menu_search" msgid="3816712084502856974">"Іздеу"</string>
    <string name="menu_settings" msgid="6008033148948428823">"Параметрлер"</string>
    <string name="menu_open" msgid="432922957274920903">"Ашу"</string>
    <string name="menu_save" msgid="2394743337684426338">"Сақтау"</string>
    <string name="menu_share" msgid="3075149983979628146">"Бөлісу"</string>
    <string name="menu_delete" msgid="8138799623850614177">"Жою"</string>
    <string name="menu_select" msgid="8711270657353563424">"«<xliff:g id="DIRECTORY">^1</xliff:g>» таңдау"</string>
    <!-- no translation found for menu_advanced_show (4693652895715631401) -->
    <skip />
    <!-- no translation found for menu_advanced_show (5792182900084144261) -->
    <skip />
    <!-- no translation found for menu_advanced_hide (4218809952721972589) -->
    <skip />
    <!-- no translation found for menu_advanced_hide (4845869969015718848) -->
    <skip />
    <!-- no translation found for menu_file_size_show (3240323619260823076) -->
    <skip />
    <!-- no translation found for menu_file_size_hide (8881975928502581042) -->
    <skip />
    <string name="mode_selected_count" msgid="459111894725594625">"<xliff:g id="COUNT">%1$d</xliff:g> таңдалды"</string>
    <string name="sort_name" msgid="9183560467917256779">"Атауы бойынша"</string>
    <string name="sort_date" msgid="586080032956151448">"Өзгертілген мерзімі бойынша"</string>
    <string name="sort_size" msgid="3350681319735474741">"Өлшемі бойынша"</string>
    <string name="drawer_open" msgid="4545466532430226949">"Тамырын көрсету"</string>
    <string name="drawer_close" msgid="7602734368552123318">"Тамырын жасыру"</string>
    <string name="save_error" msgid="6167009778003223664">"Құжатты сақтау орындалмады"</string>
    <string name="create_error" msgid="3735649141335444215">"Қалта жасақтау іске аспады"</string>
    <string name="query_error" msgid="1222448261663503501">"Құжаттарды өтіну орындалмады"</string>
    <string name="root_recent" msgid="4470053704320518133">"Жуықта қолданылған"</string>
    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> бос"</string>
    <string name="root_type_service" msgid="2178854894416775409">"Жад қызметтері"</string>
    <string name="root_type_shortcut" msgid="3318760609471618093">"Төте пернелер"</string>
    <string name="root_type_device" msgid="7121342474653483538">"Құрылғылар"</string>
    <string name="root_type_apps" msgid="8838065367985945189">"Басқа қолданбалар"</string>
    <string name="empty" msgid="7858882803708117596">"Бос"</string>
    <string name="toast_no_application" msgid="1339885974067891667">"Файлды аша алмады"</string>
    <string name="toast_failed_delete" msgid="2180678019407244069">"Кейбір құжаттарды жою мүмкін болмады"</string>
    <string name="share_via" msgid="8966594246261344259">"арқылы бөлісу"</string>
</resources>
