<?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="4862486669932821937">"Вы собираетесь 1) скопировать базу данных календаря на SD-карту/USB-накопитель, которые доступны для чтения всем приложениям, и 2) отправить ее по электронной почте. Не забудьте удалить копию после того, как она будет перенесена с устройства или получена по электронной почте."</string>
    <string name="debug_tool_email_sender_picker" msgid="2000311987477419397">"Выберите приложение"</string>
    <string name="debug_tool_email_subject" msgid="2403590332256471194">"БД Календаря прилагается"</string>
    <string name="debug_tool_email_body" msgid="4835949635324134017">"К сообщению приложена база данных календаря со всеми встречами и личной информацией. Обращайтесь с ней осторожно."</string>
</resources>
