<?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">"Awaken"</string>
    <string name="sound_name_bounce" msgid="8771447635446665231">"Bounce"</string>
    <string name="sound_name_drip" msgid="1744684469020662152">"Drip"</string>
    <string name="sound_name_gallop" msgid="2664454314532060876">"Gallop"</string>
    <string name="sound_name_nudge" msgid="5445751598250698244">"Nudge"</string>
    <string name="sound_name_orbit" msgid="4623457897813255481">"Orbit"</string>
    <string name="sound_name_rise" msgid="2200258555031675806">"Rise"</string>
    <string name="sound_name_sway" msgid="348448316663085643">"Sway"</string>
    <string name="sound_name_wag" msgid="2730733083078126563">"Wag"</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>
