<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 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">

    <!-- Deprecated strings - Move the identifiers to this section, mark as
        DO NOT TRANSLATE, and remove the actual text. These will be removed in a
        bulk operation. -->
    <!-- Do Not Translate. Unused string. -->

    <!-- Name of Microsoft Exchange account type; used by AccountManager -->
    <string name="exchange_name">Corporate</string>
    <!-- Name of Microsoft Exchange account type; used by AccountManager -->
    <string name="exchange_name_alternate">Microsoft Exchange ActiveSync</string>

    <!-- Message subject for meeting accepted response. This will be followed
        by a colon and the title of the meeting (i.e. the title of the meeting becomes
        part of the subject of the message that's sent) -->
    <string name="meeting_accepted">
        Accepted:
        <xliff:g id="subject">%s</xliff:g>
    </string>
    <!-- Message subject for meeting declined response. This is followed by
        a colon and the title of the meeting (i.e. the title of the meeting becomes
        part of the subject of the message that's sent) -->
    <string name="meeting_declined">
        Declined:
        <xliff:g id="subject">%s</xliff:g>
    </string>
    <!-- Message subject for meeting tentative response. This is followed by
        a colon and the title of the meeting (i.e. the title of the meeting becomes
        part of the subject of the message that's sent) -->
    <string name="meeting_tentative">
        Tentative:
        <xliff:g id="subject">%s</xliff:g>
    </string>
    <!-- Message subject for a canceled meeting email. This is followed by a
        colon and the title of the meeting (i.e. the title of the meeting becomes
        part of the subject of the message that's sent) -->
    <string name="meeting_canceled">
        Canceled:
        <xliff:g id="subject">%s</xliff:g>
    </string>
    <!-- Message subject for an updated meeting email. This is followed by a
        colon and the title of the meeting (i.e. the title of the meeting becomes
        part of the subject of the message that's sent) -->
    <string name="meeting_updated">
        Updated:
        <xliff:g id="subject">%s</xliff:g>
    </string>

    <!-- Indicate when a meeting takes place. This is presented in in bullet
        form, as in, "When: xxx" followed by "Where: xxx" -->
    <string name="meeting_when">
        When:
        <xliff:g id="when">%s</xliff:g>
    </string>
    <!-- Indicate where a meeting takes place. This is presented in in bullet
        form, as in, "When: xxx" followed by "Where: xxx" -->
    <string name="meeting_where">
        Where:
        <xliff:g id="where">%s</xliff:g>
    </string>
    <!-- Indicate that a meeting is recurring. This would normally be presented
        after "When: xxx", e.g. "When: Tue, Mar 10, 2010 at 2:30pm (recurring)" -->
    <string name="meeting_recurring">
        When:
        <xliff:g id="eventdate" example="Tue, Mar 10, 2010 at 2:30 pm">%s</xliff:g>
        (recurring)
    </string>
    <!-- Indicate that a meeting lasts all day. This would normally be presented
        after "When: xxx", e.g. "When: Tue, Mar 10, 2010 (all day)" -->
    <string name="meeting_allday">
        When:
        <xliff:g id="eventdate" example="Tue, Mar 10, 2010 ">%s</xliff:g>
        (all day)
    </string>
    <!-- Indicate that a meeting lasts all day and is recurring. This would normally be presented
        after "When: xxx", e.g. "When: Tue, Mar 10, 2010 (all day, recurring)" -->
    <string name="meeting_allday_recurring">
        When:
        <xliff:g id="eventdate" example="Tue, Mar 10, 2010 ">%s</xliff:g>
        (all day, recurring)
    </string>

    <!-- Notification message in notifications window when calendar sync is
        automatically enabled for pre-existing Exchange accounts on upgrade -->
    <string name="notification_exchange_calendar_added">Exchange calendar added</string>

    <!-- The name of this APK as shown in manage applications settings. [CHAR LIMIT=30] -->
    <string name="app_name" >Exchange Services</string>

    <!-- Used as the body text of a message reporting to an attendee that a
        specific instance of a recurring meeting has been canceled -->
    <string name="exception_cancel">
        This event has been canceled
        for:
        <xliff:g id="date">%s</xliff:g>
    </string>
    <!-- Used as the body text of a message reporting to an attendee that a
        specific instance of a recurring meeting has been changed -->
    <string name="exception_updated">
        The details of this event have been changed
        for:
        <xliff:g id="date">%s</xliff:g>
    </string>

    <!-- The following are a list of policies that the user's server might require, but that can't
        be enforced by our device.  We will list them separated by commas, as required -->
    <!-- A policy in which the device may not have a storage card [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_storage_cards">Don\'t allow storage cards</string>
    <!-- A policy in which the device may not have unsigned applications installed
        [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_unsigned_apps">Don\'t allow unsigned apps</string>
    <!-- A policy in which the device may not allow application installation via an unsigned
        installer [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_unsigned_installers">Don\'t allow unsigned app
        installers</string>
    <!-- A policy in which the device may not allow wifi communications [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_wifi">Don\'t allow Wi-Fi</string>
    <!-- A policy in which the device may not allow text messaging [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_text_messaging">Don\'t allow text messaging</string>
    <!-- A policy in which the device may not allow POP3 or IMAP email accounts [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_pop_imap">Don\'t allow POP3 or IMAP accounts</string>
    <!-- A policy in which the device may allow infrared communications [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_irda">Don\'t allow infrared communications</string>
    <!-- A policy in which the device may allow HTML email to be received [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_html">Don\'t allow HTML email</string>
    <!-- A policy in which the device may not allow the user of web browsers [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_browser">Don\'t allow browsers</string>
    <!-- A policy in which the device may not allow the receipt of consumer email
        [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_consumer_email">Don\'t allow consumer email</string>
    <!-- A policy in which the device may not allow internet connection sharing
        [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_internet_sharing">Don\'t allow Internet sharing</string>
    <!-- A policy in which messages must be in SMIME format [CHAR LIMIT=50] -->
    <string name="policy_require_smime">Require SMIME messages</string>
    <!-- A policy in which the device's bluetooth capabilities are restricted [CHAR LIMIT=50] -->
    <string name="policy_bluetooth_restricted">Restrict Bluetooth usage</string>
    <!-- A policy in which the device blocks specified applications [CHAR LIMIT=50]-->
    <string name="policy_app_blacklist">Disallow specified apps</string>
    <!-- A policy in which the device allows only specified applications [CHAR LIMIT=50] -->
    <string name="policy_app_whitelist">Allow only specified apps</string>
    <!-- A policy in which the device limits the amount of text that can be displayed for a
        given message [CHAR LIMIT=50] -->
    <string name="policy_text_truncation">Restrict text email size</string>
    <!-- A policy in which the device limits the amount of HTML text that can be displayed for a
        given message [CHAR LIMIT=50] -->
    <string name="policy_html_truncation">Restrict HTML email size</string>
    <!-- A policy in which the device requires device or sd card encryption [CHAR LIMIT=50] -->
    <string name="policy_require_sd_encryption">Require SD card encryption</string>

    <!-- The following are a list of policies that the user's server requires and that are
         in force.  We will list them separated by commas, as required -->
    <!-- A policy in which attachments aren't allowed to be downloaded [CHAR LIMIT=50] -->
    <string name="policy_dont_allow_attachments">Don\'t allow attachments</string>
    <!-- A policy in which the device restricts the size of attachments that can be downloaded
        [CHAR LIMIT=50] -->
    <string name="policy_max_attachment_size">Restrict attachment size</string>
    <!-- A policy in which the device may only sync manually while roaming [CHAR LIMIT=50] -->
    <string name="policy_require_manual_sync_roaming">Only allow manual sync while roaming</string>

    <!-- The following is a policy that may or not be supported on a particular device -->
    <!-- A policy in which the device requires device or sd card encryption [CHAR LIMIT=50] -->
    <string name="policy_require_encryption">Require device encryption</string>


    <!--  The window length strings below MUST remain in sync with those in com.android.email -->
    <!-- In account setup options & account settings screens (exchange), sync window length; this
        implies loading a 'reasonable' number of messages [CHAR LIMIT=25] -->
    <string name="account_setup_options_mail_window_auto">Automatic</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_1day">One day</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_3days">Three days</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_1week">One week</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_2weeks">Two weeks</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_1month">One month</string>
    <!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25]  -->
    <string name="account_setup_options_mail_window_all">All</string>
</resources>
