<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    Copyright (C) 2018 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="assist_action_play_label" msgid="6278705468288338172">"Пускане"</string>
    <string name="action_mute_short" msgid="5239851786101022633">"Спиране"</string>
    <string name="action_mute_long" msgid="6846675719189989477">"Спиране на разговора"</string>
    <string name="action_unmute_short" msgid="7157822835069715986">"Пускане"</string>
    <string name="action_unmute_long" msgid="22482625837159466">"Пускане на разговора"</string>
    <string name="action_canned_reply" msgid="4045960823021872834">"„В момента шофирам.“"</string>
    <string name="canned_reply_message" msgid="7959257272917598063">"В момента шофирам."</string>
    <string name="toast_message_sent_success" msgid="1159956191974273064">"Съобщението е изпратено успешно."</string>
    <string name="notification_service_label" msgid="7512186049723777468">"Услуга за приемане на известията в автомобила"</string>
    <string name="notifications" msgid="2865534625906329283">"Център за известия"</string>
    <string name="clear_all" msgid="1845314281571237722">"Изчиств. на вс."</string>
    <string name="ellipsized_string" msgid="6993649229498857557">"…"</string>
    <string name="show_more" msgid="7291378544926443344">"Показване на още"</string>
    <string name="notification_header" msgid="324550431063568049">"Известия"</string>
    <string name="empty_notification_header" msgid="4928379791607839720">"Няма известия"</string>
    <string name="show_less" msgid="7342677676229302829">"По-малко"</string>
    <string name="show_count_more" msgid="480555295700318609">"Показване на още <xliff:g id="COUNT">%d</xliff:g>"</string>
    <string name="message_unshown_count" msgid="2234421277246741233">"+ още <xliff:g id="COUNT">%d</xliff:g>"</string>
    <plurals name="restricted_message_text" formatted="false" msgid="507312322886633308">
      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> нови съобщения</item>
      <item quantity="one">1 ново съобщение</item>
    </plurals>
    <string name="manage_text" msgid="4225197445283791757">"Управление"</string>
</resources>
