<?xml version="1.0" encoding="utf-8"?>
<resources>
  <!-- Do not translate. -->
  <string translatable="false" name="go">Go</string>

  <!-- Do not translate. -->
  <string-array translatable="false" name="string_options">
    <item>installing</item>
    <item>erasing</item>
    <item>no_command</item>
    <item>error</item>
    <item>installing_security</item>
  </string-array>

  <!-- Displayed on the screen beneath the animated android while the
       system is installing an update. [CHAR LIMIT=60] -->
  <string name="recovery_installing">Installing system update</string>

  <!-- Displayed on the screen beneath the animated android while the
       system is erasing a partition (either a data wipe aka "factory
       reset", or a cache wipe). [CHAR LIMIT=60] -->
  <string name="recovery_erasing">Erasing</string>

  <!-- Displayed on the screen when the user has gotten into recovery
       mode without a command to run.  Will not normally happen, but
       users (especially developers) may boot into recovery mode
       manually via special key combinations.  [CHAR LIMIT=60] -->
  <string name="recovery_no_command">No command</string>

  <!-- Displayed on the triangle-! screen when a system update
       installation or data wipe procedure encounters an error.  [CHAR
       LIMIT=60] -->
  <string name="recovery_error">Error!</string>

  <!-- Displayed on the screen beneath the animation while the
       system is installing a security update. [CHAR LIMIT=60] -->
  <string name="recovery_installing_security">Installing security update</string>

  <!-- Displayed on the screen beneath the recovery titles when the
       device enters the recovery mode and prompts a data wipe. [CHAR
       LIMIT=400] -->
  <string name="recovery_wipe_data_menu_header">Cannot load Android
    system. Your data may be corrupt. If you continue to get this
    message, you may need to perform a factory data reset and erase
    all user data stored on this device.</string>

  <!-- Displayed on the screen as the first element of the menu to
       prompt the wipe data, beneath the menu header. The menu shows
       up when the device enters the recovery mode and prompts a data
       wipe. [CHAR LIMIT=60] -->
  <string name="recovery_try_again">Try again</string>

  <!-- Displayed on the screen as the second element of the menu to
       prompt the wipe data, beneath the menu header. The menu shows
       up when the device enters the recovery mode and prompts a data
       wipe. [CHAR LIMIT=60] -->
  <string name="recovery_factory_data_reset">Factory data reset</string>

  <!-- Displayed on the screen beneath the recovery titles when users
       select "Factory data reset" in the previous menu. [CHAR
       LIMIT=150] -->
  <string name="recovery_wipe_data_confirmation">Wipe all user data?\n\n
    THIS CAN NOT BE UNDONE!</string>

  <!-- Displayed on the screen as the first element of the wipe data
       confirmation menu. The menu shows up when users select
       "Factory data reset" when prompted to wipe data. [CHAR
       LIMIT=60] -->
  <string name="recovery_cancel_wipe_data">Cancel</string>

</resources>
