<?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">
    <!-- no translation found for app_name (5955735546071433666) -->
    <skip />
    <!-- no translation found for record_your_message (1583671906691662148) -->
    <skip />
    <!-- no translation found for message_recorded (381539460921872233) -->
    <skip />
    <!-- no translation found for review_message (201616012287839474) -->
    <skip />
    <!-- no translation found for recording (4426791467211376099) -->
    <skip />
    <!-- no translation found for recording_stopped (1580278719585249612) -->
    <skip />
    <!-- no translation found for storage_is_full (416039755956726221) -->
    <skip />
    <string name="max_length_reached" msgid="6398215743584093353">"ከፍተኛ ርዝመት ደርሷል"</string>
    <string name="insert_sd_card" product="nosdcard" msgid="8212754638456591792">"እባክዎ የUSB  ማከማቻ ይሰኩ"</string>
    <!-- outdated translation 8212754638456591792 -->     <string name="insert_sd_card" product="default" msgid="2251831579676114197">"እባክዎ የUSB  ማከማቻ ይሰኩ"</string>
    <!-- no translation found for min_available (5493947690062988925) -->
    <skip />
    <!-- no translation found for sec_available (2297020788861694399) -->
    <skip />
    <!-- no translation found for accept (7770652589312551402) -->
    <skip />
    <!-- no translation found for discard (761613433029406319) -->
    <skip />
    <!-- no translation found for button_ok (3004911343723076226) -->
    <skip />
    <!-- no translation found for audio_db_title_format (7912182366970749312) -->
    <skip />
    <!-- no translation found for audio_db_artist_name (961640229118120080) -->
    <skip />
    <!-- no translation found for audio_db_album_name (9072588113803264440) -->
    <skip />
    <!-- no translation found for audio_db_playlist_name (5592939050047058162) -->
    <skip />
    <string name="error_sdcard_access" product="nosdcard" msgid="7292601458300337571">"USB  ማከማቻ ለመድረስ አልተቻለም።"</string>
    <!-- outdated translation 7292601458300337571 -->     <string name="error_sdcard_access" product="default" msgid="8005660724361043509">"USB  ማከማቻ ለመድረስ አልተቻለም።"</string>
    <!-- no translation found for error_app_internal (2365923237657572011) -->
    <skip />
    <!-- no translation found for error_mediadb_new_record (2225774949947938064) -->
    <skip />
</resources>
