<?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 />
    <string name="storage_is_full" msgid="416039755956726221">"Isitoreji sigcwele"</string>
    <string name="max_length_reached" msgid="6398215743584093353">"Ubude obuphezulu bufinyelelwe"</string>
    <string name="insert_sd_card" product="nosdcard" msgid="8212754638456591792">"Sicela ukhweze isitoreji se-USB"</string>
    <!-- outdated translation 8212754638456591792 -->     <string name="insert_sd_card" product="default" msgid="2251831579676114197">"Sicela ukhweze isitoreji se-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">"Ayikwazi ukufinyelela kwisitoreji se-USB"</string>
    <!-- outdated translation 7292601458300337571 -->     <string name="error_sdcard_access" product="default" msgid="8005660724361043509">"Ayikwazi ukufinyelela kwisitoreji se-USB"</string>
    <!-- no translation found for error_app_internal (2365923237657572011) -->
    <skip />
    <!-- no translation found for error_mediadb_new_record (2225774949947938064) -->
    <skip />
</resources>
