<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 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">
    <string name="app_name">Package installer</string>
    <string name="next">Next</string>
    <string name="install">Install</string>
    <string name="done">Done</string>
    <!-- TODO REMOVE LATER -->
    <string name="security_settings_desc">Allow this app to:</string>
    <string name="cancel">Cancel</string>
    <string name="unknown">Unknown</string>
    <string name="installing">Installing\u2026</string>
    <string name="install_done">App installed.</string>
    <!-- Message for installing a new app that requires some permissions [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question">Do you want to install this application?
            It will get access to:</string>
    <!-- Message for installing a new app that does not require permissions [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question_no_perms">Do you want to install this application?
            It does not require any special access.</string>
    <!-- Message for updating an existing app [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question_update">Do you want to install an update
            to this existing application?  Your existing data will not
            be lost.  The updated application will get access to:</string>
    <!-- Message for updating an existing system app [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question_update_system">Do you want to install an update
            to this built-in application?  Your existing data will not
            be lost.  The updated application will get access to:</string>
    <!-- Message for updating an existing app, no permissions [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question_update_no_perms">Do you want to install an update
            to this existing application?  Your existing data will not
            be lost.  It does not require any special access.</string>
    <!-- Message for updating an existing system app, no permissions [CHAR LIMIT=NONE] -->
    <string name="install_confirm_question_update_system_no_perms">Do you want to install an update
            to this built-in application?  Your existing data will not
            be lost.  It does not require any special access.</string>
    <string name="install_failed">App not installed.</string>
    <!-- Reason displayed when installation fails because the installation package itself is invalid
        in some way (e.g., corrupt) [CHAR LIMIT=100] -->
    <string name="install_failed_invalid_apk">The package appears to be corrupt.</string>
    <!-- Reason displayed when installation fails because the package an existing package is
        installed with a conflicting package author signature [CHAR LIMIT=100] -->
    <string name="install_failed_inconsistent_certificates">An existing package by the same name
        with a conflicting signature is already installed.</string>
    <!-- Reason displayed when installation fails because the package specifies a minimum compatible
        OS version that is newer than our current OS version. [CHAR LIMIT=100] -->
    <string name="install_failed_older_sdk">The package only works on newer versions of
        Android.</string>
    <!-- Reason displayed when installation fails because the package specifies it is compatible
        only with a CPU that the current tablet doesn't have. [CHAR LIMIT=100] -->
    <string name="install_failed_cpu_abi_incompatible" product="tablet">This app isn\'t
        compatible with your tablet.</string>
    <!-- Reason displayed when installation fails because the package specifies it is compatible
        only with a CPU that the current TV doesn't have. [CHAR LIMIT=100] -->
    <string name="install_failed_cpu_abi_incompatible" product="tv">This app isn\'t
        compatible with your TV.</string>
    <!-- Reason displayed when installation fails because the package specifies it is compatible
        only with a CPU that the current phone doesn't have. [CHAR LIMIT=100] -->
    <string name="install_failed_cpu_abi_incompatible" product="default">This app isn\'t
        compatible with your phone.</string>
    <!-- Reason displayed when installation fails because the package was deleted during the
        installation process. [CHAR LIMIT=100] -->
    <string name="install_failed_file_not_found">The package specified was deleted before
        installation could be completed.</string>
    <!-- Reason displayed when installation fails because the package could not be verified
        because the package verifier rejected it. [CHAR LIMIT=100] -->
    <string name="install_failed_verify_failed">The package did not pass verification and cannot
        be installed.</string>
    <!-- Reason displayed when installation fails because the package could not be verified
        before the internal system timer expired. [CHAR LIMIT=100] -->
    <string name="install_failed_verify_timeout">A timeout occurred while trying to verify this
        package. Try to install it again later.</string>
    <!-- Message presented when an application could not be installed on the tablet for some reason. [CHAR LIMIT=100] -->
    <string name="install_failed_msg" product="tablet"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your tablet.</string>
    <!-- Message presented when an application could not be installed on the TV for some reason. [CHAR LIMIT=100] -->
    <string name="install_failed_msg" product="tv"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your TV.</string>
    <!-- Message presented when an application could not be installed on the phone for some reason. [CHAR LIMIT=100] -->
    <string name="install_failed_msg" product="default"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed on your phone.</string>
    <string name="launch">Open</string>
    <string name="unknown_apps_dlg_title">Install blocked</string>
    <!-- Message presented in a dialog box when a package is requested to be installed, but the "Allow unknown applications" checkbox is not enabled. [CHAR LIMIT=100] -->
    <string name="unknown_apps_dlg_text" product="tablet">For security, your tablet is set to block installation of apps obtained from unknown sources.</string>
    <!-- Message presented in a dialog box when a package is requested to be installed, but the "Allow unknown applications" checkbox is not enabled. [CHAR LIMIT=100] -->
    <string name="unknown_apps_dlg_text" product="tv">For security, your TV is set to block installation of apps obtained from unknown sources.</string>
    <!-- Message presented in a dialog box when a package is requested to be installed, but the "Allow unknown applications" checkbox is not enabled. [CHAR LIMIT=100] -->
    <string name="unknown_apps_dlg_text" product="default">For security, your phone is set to block installation of apps obtained from unknown sources.</string>
    <!-- Message presented in a dialog box when the device administrator restricts the installation of apps from unknown sources. [CHAR LIMIT=none] -->
    <string name="unknown_apps_admin_dlg_text">Your administrator doesn\'t allow installation of apps obtained from unknown sources.</string>

    <string name="ok">OK</string>
    <string name="settings">Settings</string>
    <!-- Title of dialog asking user if they would allow an application to be an install source. -->
    <string name="allow_source_dlg_title">New source for apps</string>
    <!-- Message of dialog asking user if they would allow an application to be an install source. -->
    <string name="allow_source_dlg_text"><xliff:g id="app_name">%1$s</xliff:g> wants to install other apps.\n\nAllow
        this now and in the future?</string>
    <string name="manage_applications">Manage apps</string>
    <string name="dlg_app_replacement_title">Replace app?</string>
    <string name="dlg_app_replacement_statement">The app you\'re installing will replace another app.\n\nAll your previous user data will be saved.</string>
    <!-- Dialog attributes when replacing system app -->
    <string name="dlg_sys_app_replacement_statement">This is a system app.\n\nAll your previous user data will be saved.</string>
    <string name="out_of_space_dlg_title">Out of space</string>
    <string name="out_of_space_dlg_text"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be installed. Free up some space and try again.</string>
    <!-- strings related to uninstall activity -->
    <string name="dlg_ok">OK</string>
    <string name="app_not_found_dlg_title">App not found</string>
    <string name="app_not_found_dlg_text"> The app wasn\'t found in the list of installed apps.</string>
    <string name="uninstall_application_title">Uninstall app</string>
    <string name="uninstall_update_title">Uninstall update</string>
    <string name="uninstall_activity_text"><xliff:g id="activity_name">%1$s</xliff:g> is part of the following app:</string>
    <string name="uninstall_application_text">Do you want to uninstall this app?</string>
    <string name="uninstall_application_text_all_users">Do you want to uninstall this app for <b>all</b>
        users?  The application and its data will be removed from <b>all</b> users on the device.</string>
    <string name="uninstall_application_text_user">Do you want to uninstall this app for the user <xliff:g id="username">%1$s</xliff:g>?</string>
    <string name="uninstall_update_text">Do you want to replace this app with the factory version?</string>
    <string name="uninstalling">Uninstalling\u2026</string>
    <string name="uninstall_done">Uninstall finished.</string>
    <string name="uninstall_failed">Uninstall unsuccessful.</string>
    <!-- String presented to the user when uninstalling a package failed because the target package
        is a current device administrator [CHAR LIMIT=80] -->
    <string name="uninstall_failed_device_policy_manager">Can\'t uninstall because this package is an
        active device administrator.</string>
    <!-- String presented to the user when uninstalling a package failed because the target package
        is a current device administrator for some user [CHAR LIMIT=100] -->
    <string name="uninstall_failed_device_policy_manager_of_user">Can\'t uninstall because this package is an
        active device administrator for the user <xliff:g id="username">%1$s</xliff:g>.</string>
    <!-- String presented to the user when uninstalling a package failed because a profile owner
         has marked the the target package as not able to be uninstalled [CHAR LIMIT=80] -->
    <string name="uninstall_blocked_profile_owner">This app is needed for
        your work profile and can\'t be uninstalled.</string>
    <!-- String presented to the user when uninstalling a package failed because a device owner
         has marked the the target package as not able to be uninstalled [CHAR LIMIT=80] -->
    <string name="uninstall_blocked_device_owner">This app is required
        by your device administrator and can\'t be uninstalled.</string>
    <!-- String on a button that leads to the "device administrator" configuration setting where a
        user will be able to disable the device administrator in order to uninstall
        it. [CHAR LIMIT=50] -->
    <string name="manage_device_administrators">Manage device administrators</string>
    <string name="uninstall_failed_msg"><xliff:g id="app_name">%1$s</xliff:g> couldn\'t be uninstalled.</string>

    <!-- Dialog attributes to indicate parse errors -->
    <string name="Parse_error_dlg_title">Parse error</string>
    <string name="Parse_error_dlg_text">There was a problem parsing the package.</string>

    <!-- Tab label for new permissions being added to an existing app [CHAR LIMIT=20] -->
    <string name="newPerms">New</string>
    <!-- Tab label for all permissions of an app being installed [CHAR LIMIT=20] -->
    <string name="allPerms">All</string>
    <!-- Tab label for permissions related to user privacy [CHAR LIMIT=20] -->
    <string name="privacyPerms">Privacy</string>
    <!-- Tab label for permissions related to device behavior [CHAR LIMIT=20] -->
    <string name="devicePerms">Device Access</string>

    <!-- Body text for new tab when there are no new permissions [CHAR LIMIT=NONE] -->
    <string name="no_new_perms">This update requires no new permissions.</string>

    <string name="grant_confirm_question">Do you want to grant the following permissions?
        It will get access to:</string>


    <!-- Title for the dialog button to allow a permission grant. -->
    <string name="grant_dialog_button_allow">Allow</string>

    <!-- Title for the dialog button to deny a permission grant. -->
    <string name="grant_dialog_button_deny">Deny</string>

    <!-- Template for the current permission from the total number of permissions. -->
    <string name="current_permission_template">
        <xliff:g id="current_permission_index" example="1">%1$s</xliff:g> of
        <xliff:g id="permission_count" example="2">%2$s</xliff:g></string>

    <!-- Template for the warning message when an app requests a permission. -->
    <string name="permission_warning_template">Allow
        <xliff:g id="app_name" example="Gmail">%1$s</xliff:g> to
        <xliff:g id="action" example="do something">%2$s</xliff:g>?</string>

    <!-- Permissions -->

    <!-- Title of an application permission, listed so the user can choose whether they want
         to allow the application to do this. -->
    <string name="permlab_togglePermissions" translatable="false">toggle permissions</string>
    <!-- Description of an application permission, listed so the user can choose whether
         they want to allow the application to do this. -->
    <string name="permdesc_togglePermissions" translatable="false">Allows the holder to launch
        the UI for toggling app permissions. Should never be needed for normal apps.</string>

    <!-- Breadcrumb for page of managing application permissions [CHAR LIMIT=50] -->
    <string name="app_permissions_breadcrumb">Apps</string>

    <!-- Title for page of managing application permissions -->
    <string name="app_permissions">App permissions</string>
    <!-- Checkbox that allows user to not be questioned about this permission
         request again -->
    <string name="never_ask_again">Never ask again</string>

    <!-- Label when app requests no permissions -->
    <string name="no_permissions">No permissions</string>

    <!-- Label for button that leads to more permissions [CHAR LIMIT=40] -->
    <string name="additional_permissions">Additional permissions</string>

    <!-- Description of how many more permissions to view on next page [CHAR LIMIT=30] -->
    <plurals name="additional_permissions_more">
        <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> more</item>
        <item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> more</item>
    </plurals>

    <!-- Warning for turning off permissions on older apps -->
    <string name="old_sdk_deny_warning">This app was designed for an older version of Android. Denying permission may cause it to no longer function as intended.</string>

    <!-- The default description of a permission, i.e. what it does.  [CHAR LIMIT=40] -->
    <string name="default_permission_description">perform an unknown action</string>

    <!-- Summary of number of apps currently granted a single permission [CHAR LIMIT=45] -->
   <string name="app_permissions_group_summary"><xliff:g id="count" example="10">%1$d</xliff:g> of <xliff:g id="count" example="10">%2$d</xliff:g> apps allowed</string>

   <!-- [CHAR LIMIT=NONE] Menu for manage permissions to control whether system apps are shown -->
   <string name="menu_show_system">Show system</string>
   <!-- [CHAR LIMIT=NONE] Menu for manage permissions to control whether system apps are hidden -->
   <string name="menu_hide_system">Hide system</string>

   <!-- [CHAR LIMIT=30] Title for page managing what apps have a permission granted -->
   <string name="permission_title"><xliff:g id="permission" example="Camera">%1$s</xliff:g> permissions</string>

   <!-- [CHAR LIMIT=NONE] Label when no apps requesting this permission -->
   <string name="no_apps">No apps</string>

   <!-- [CHAR LIMIT=30] Title of button that leads to location settings -->
   <string name="location_settings">Location Settings</string>

   <!-- [CHAR LIMIT=NONE] Warning about how this app cannot have location permission disabled -->
   <string name="location_warning"><xliff:g id="app_name" example="Package Installer">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings.</string>

   <!-- [CHAR LIMIT=NONE] Warning message when turning off permission for system apps -->
   <string name="system_warning">If you deny this permission, basic features of your device may no longer function as intended.</string>

   <!-- [CHAR LIMIT=NONE] Summary of a permission switch when it's enforced by policy -->
   <string name="permission_summary_enforced_by_policy">Enforced by policy</string>

   <!-- Text displayed until loading is done -->
   <string name="loading">Loading\u2026</string>

   <!-- [CHAR LIMIT=45] Title of all permissions settings -->
   <string name="all_permissions">All permissions</string>
   <!-- [CHAR LIMIT=45] Group of permissions granted to app automatically when installed. -->
   <string name="other_permissions">Other app capabilities</string>

   <!-- Title of the permission dialog for accessibility purposes- spoken to the user. [CHAR LIMIT=none] -->
   <string name="permission_request_title">Permission request</string>

    <!-- Title for the dialog that warns the user they need to turn off screen overlays
         before permissions can be changed. [CHAR LIMIT=NONE] -->
   <string name="screen_overlay_title">Screen overlay detected</string>

   <!-- Message for the dialog that warns the user they need to turn off screen overlays
        before permissions can be changed. The "Settings > Apps" conveys to the user to
        go to Settings and click on apps, this may need updates in RTL languages. [CHAR LIMIT=NONE] -->
   <string name="screen_overlay_message">To change this permission setting, you first have to turn off the screen overlay from Settings \u003e Apps</string>

    <!-- Button for the dialog that warns the user they need to turn off screen overlays
         before permissions can be changed. [CHAR LIMIT=NONE] -->
    <string name="screen_overlay_button">Open settings</string>

    <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. -->
    <string name="wear_not_allowed_dlg_title">Android Wear</string>
    <!-- Title of dialog telling users that Install/Uninstall action is not supported on Android Wear. -->
    <string name="wear_not_allowed_dlg_text">Instal/Uninstall actions not supported on Wear.</string>

</resources>
