<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <!-- Title for the Calendar Storage process. -->
    <string name="calendar_storage">Calendar Storage</string>

    <!-- [CHAR LIMIT=NONE] Boot message while upgrading calendar. -->
    <string name="upgrade_msg">Upgrading Calendar database.</string>

    <!-- Temporary Calendar name to use before we have the calendar name from the server -->
    <string name="calendar_default_name">Default</string>

    <!-- Caption on secret calendar info -->
    <string name="calendar_info">Calendar info</string>

    <!-- Error message for secret calendar info -->
    <string name="calendar_info_error">Error</string>

    <!-- No calendars message for secret calendar info -->
    <string name="calendar_info_no_calendars">No calendars</string>

    <!-- Event count message for secret calendar info -->
    <string name="calendar_info_events">Events: <xliff:g id = "events">%1$d</xliff:g></string>

    <!-- Event and dirty event count message for secret calendar info -->
    <string name="calendar_info_events_dirty">Events: <xliff:g id = "events">%1$d</xliff:g>, Unsaved: <xliff:g id = "dirty events">%2$d</xliff:g></string>

    <!-- What to show in messaging that refers to this provider, e.g. AccountSyncSettings -->
    <string name="provider_label">Calendar</string>

    <!-- Debug tool - dialog - delete file now [CHAR LIMIT=NONE] -->
    <string name="debug_tool_delete_button">Delete now</string>

    <!-- Debug tool - dialog - start copying [CHAR LIMIT=NONE] -->
    <string name="debug_tool_start_button">Start</string>
    
    <!-- Debug tool - Main message shown to the user when starting up the debug tool [CHAR LIMIT=NONE] -->
    <string name="debug_tool_message">You are about to 1) make a copy of your calendar database to the sd card/usb storage which is readable by any app and 2) email it. Remember to delete it as soon as you have successfully copied it off the device or the email is received.</string>

    <!-- Debug tool - email subject [CHAR LIMIT=NONE] -->
    <string name="debug_tool_email_sender_picker">Select a program to send your file</string>

    <!-- Debug tool - email subject [CHAR LIMIT=NONE] -->
    <string name="debug_tool_email_subject">Calendar Db attached</string>

    <!-- Debug tool - email body [CHAR LIMIT=NONE] -->
    <string name="debug_tool_email_body">Attached is my calendar database with all my appointments and personal information. Please handle with care.</string>
</resources>
