<?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="calendar_storage" msgid="5387668002987562770">"Съхранение в Календар"</string>
    <string name="upgrade_msg" msgid="2792831029435070926">"Надстройка на базата от данни на календара."</string>
    <string name="calendar_default_name" msgid="6924293766625167275">"Основен"</string>
    <string name="calendar_info" msgid="6687678621418059281">"Информация за календар"</string>
    <string name="calendar_info_error" msgid="5575162446528419982">"Грешка"</string>
    <string name="calendar_info_no_calendars" msgid="4287534468186704433">"Няма календари"</string>
    <string name="calendar_info_events" msgid="1805502308105103803">"Събития: <xliff:g id="EVENTS">%1$d</xliff:g>"</string>
    <string name="calendar_info_events_dirty" msgid="8879392112564499515">"Събития: <xliff:g id="EVENTS_0">%1$d</xliff:g>, Незапазени: <xliff:g id="DIRTY_EVENTS">%2$d</xliff:g>"</string>
    <string name="provider_label" msgid="2306513350843464739">"Календар"</string>
    <string name="debug_tool_delete_button" msgid="5052706251268452090">"Изтриване сега"</string>
    <string name="debug_tool_start_button" msgid="5384780896342913563">"Стартиране"</string>
    <string name="debug_tool_message" msgid="4414152820946316089">"На път сте да 1) направите копие на базата от данни на календара си в SD картата/USB хранилището, което е четимо от всяко приложение, и 2) да го изпратите по имейл. Не забравяйте да го изтриете веднага след като го копирате успешно от устройството или когато имейлът е получен."</string>
    <string name="debug_tool_email_sender_picker" msgid="4418621476577347562">"Изберете програма, за да изпратите файла си"</string>
    <string name="debug_tool_email_subject" msgid="2403590332256471194">"Базата от данни на календара е прикачена"</string>
    <string name="debug_tool_email_body" msgid="740309162644398319">"Прикачена Ви изпращам базата от данни на календара си, заедно с всички мои срещи и лична информация. Моля, бъдете внимателни."</string>
</resources>
