<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2009 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="uid_label" msgid="8421971615411294156">"Медыя"</string>
    <string name="storage_description" msgid="4081716890357580107">"Лакальнае сховішча"</string>
    <string name="app_label" msgid="9035307001052716210">"Медыясховішча"</string>
    <string name="artist_label" msgid="8105600993099120273">"Выканаўца"</string>
    <string name="ringtone_default" msgid="1744846699922263043">"Стандартны рынгтон"</string>
    <string name="notification_sound_default" msgid="6541609166469990135">"Стандартны сігнал апавяшчэння"</string>
    <string name="alarm_sound_default" msgid="5488847775252870314">"Стандартны сігнал будзільніка"</string>
    <string name="root_images" msgid="5861633549189045666">"Відарысы"</string>
    <string name="root_videos" msgid="8792703517064649453">"Відэа"</string>
    <string name="root_audio" msgid="3505830755201326018">"Аўдыя"</string>
    <string name="sound_name_awaken" msgid="5266892392848526147">"Абуджэнне"</string>
    <string name="sound_name_bounce" msgid="8771447635446665231">"Адскок"</string>
    <string name="sound_name_drip" msgid="1744684469020662152">"Кроплі"</string>
    <string name="sound_name_gallop" msgid="2664454314532060876">"Галоп"</string>
    <string name="sound_name_nudge" msgid="5445751598250698244">"Штуршок"</string>
    <string name="sound_name_orbit" msgid="4623457897813255481">"Арбіта"</string>
    <string name="sound_name_rise" msgid="2200258555031675806">"Уздым"</string>
    <string name="sound_name_sway" msgid="348448316663085643">"Гайданне"</string>
    <string name="sound_name_wag" msgid="2730733083078126563">"Маханне"</string>
    <string name="add_ringtone_text" msgid="8077717303037760418">"Дадаць рынгтон"</string>
    <!-- no translation found for add_alarm_text (2440919366091720815) -->
    <skip />
    <!-- no translation found for add_notification_text (5013822215567515665) -->
    <skip />
    <string name="delete_ringtone_text" msgid="2963662097583300181">"Выдаліць"</string>
    <string name="unable_to_add_ringtone" msgid="6256097521165711269">"Немагчыма дадаць карыстальніцкі рынгтон"</string>
    <string name="unable_to_delete_ringtone" msgid="2258180073859253495">"Немагчыма выдаліць карыстальніцкі рынгтон"</string>
</resources>
