<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains definitions of strings that are specific to
Google Chrome. These strings will be translated for each locale that Google
Chrome supports. -->

<grit base_dir="." latest_public_release="0" current_release="1"
      source_lang_id="en" enc_check="möl">
  <outputs>
    <output filename="grit/google_chrome_strings.h" type="rc_header">
      <emit emit_type='prepend'></emit>
    </output>
    <output filename="google_chrome_strings_am.pak" type="data_package" lang="am" />
    <output filename="google_chrome_strings_ar.pak" type="data_package" lang="ar" />
    <output filename="google_chrome_strings_bg.pak" type="data_package" lang="bg" />
    <output filename="google_chrome_strings_bn.pak" type="data_package" lang="bn" />
    <output filename="google_chrome_strings_ca.pak" type="data_package" lang="ca" />
    <output filename="google_chrome_strings_cs.pak" type="data_package" lang="cs" />
    <output filename="google_chrome_strings_da.pak" type="data_package" lang="da" />
    <output filename="google_chrome_strings_de.pak" type="data_package" lang="de" />
    <output filename="google_chrome_strings_el.pak" type="data_package" lang="el" />
    <output filename="google_chrome_strings_en-GB.pak" type="data_package" lang="en-GB" />
    <output filename="google_chrome_strings_en-US.pak" type="data_package" lang="en" />
    <output filename="google_chrome_strings_es.pak" type="data_package" lang="es" />
    <if expr="is_ios">
      <!-- iOS uses es-MX for es-419 -->
      <output filename="google_chrome_strings_es-MX.pak" type="data_package" lang="es-419" />
    </if>
    <if expr="not is_ios">
      <output filename="google_chrome_strings_es-419.pak" type="data_package" lang="es-419" />
    </if>
    <output filename="google_chrome_strings_et.pak" type="data_package" lang="et" />
    <output filename="google_chrome_strings_fa.pak" type="data_package" lang="fa" />
    <output filename="google_chrome_strings_fi.pak" type="data_package" lang="fi" />
    <output filename="google_chrome_strings_fil.pak" type="data_package" lang="fil" />
    <output filename="google_chrome_strings_fr.pak" type="data_package" lang="fr" />
    <output filename="google_chrome_strings_gu.pak" type="data_package" lang="gu" />
    <output filename="google_chrome_strings_he.pak" type="data_package" lang="he" />
    <output filename="google_chrome_strings_hi.pak" type="data_package" lang="hi" />
    <output filename="google_chrome_strings_hr.pak" type="data_package" lang="hr" />
    <output filename="google_chrome_strings_hu.pak" type="data_package" lang="hu" />
    <output filename="google_chrome_strings_id.pak" type="data_package" lang="id" />
    <output filename="google_chrome_strings_it.pak" type="data_package" lang="it" />
    <output filename="google_chrome_strings_ja.pak" type="data_package" lang="ja" />
    <output filename="google_chrome_strings_kn.pak" type="data_package" lang="kn" />
    <output filename="google_chrome_strings_ko.pak" type="data_package" lang="ko" />
    <output filename="google_chrome_strings_lt.pak" type="data_package" lang="lt" />
    <output filename="google_chrome_strings_lv.pak" type="data_package" lang="lv" />
    <output filename="google_chrome_strings_ml.pak" type="data_package" lang="ml" />
    <output filename="google_chrome_strings_mr.pak" type="data_package" lang="mr" />
    <output filename="google_chrome_strings_ms.pak" type="data_package" lang="ms" />
    <output filename="google_chrome_strings_nl.pak" type="data_package" lang="nl" />
    <output filename="google_chrome_strings_nb.pak" type="data_package" lang="no" />
    <!-- 'no' for Norwegian Bokmål. It should be 'nb'. -->
    <output filename="google_chrome_strings_pl.pak" type="data_package" lang="pl" />
    <if expr="is_ios">
      <!-- iOS uses pt for pt-BR -->
      <output filename="google_chrome_strings_pt.pak" type="data_package" lang="pt-BR" />
    </if>
    <if expr="not is_ios">
      <output filename="google_chrome_strings_pt-BR.pak" type="data_package" lang="pt-BR" />
    </if>
    <output filename="google_chrome_strings_pt-PT.pak" type="data_package" lang="pt-PT" />
    <output filename="google_chrome_strings_ro.pak" type="data_package" lang="ro" />
    <output filename="google_chrome_strings_ru.pak" type="data_package" lang="ru" />
    <output filename="google_chrome_strings_sk.pak" type="data_package" lang="sk" />
    <output filename="google_chrome_strings_sl.pak" type="data_package" lang="sl" />
    <output filename="google_chrome_strings_sr.pak" type="data_package" lang="sr" />
    <output filename="google_chrome_strings_sv.pak" type="data_package" lang="sv" />
    <output filename="google_chrome_strings_sw.pak" type="data_package" lang="sw" />
    <output filename="google_chrome_strings_ta.pak" type="data_package" lang="ta" />
    <output filename="google_chrome_strings_te.pak" type="data_package" lang="te" />
    <output filename="google_chrome_strings_th.pak" type="data_package" lang="th" />
    <output filename="google_chrome_strings_tr.pak" type="data_package" lang="tr" />
    <output filename="google_chrome_strings_uk.pak" type="data_package" lang="uk" />
    <output filename="google_chrome_strings_vi.pak" type="data_package" lang="vi" />
    <output filename="google_chrome_strings_zh-CN.pak" type="data_package" lang="zh-CN" />
    <output filename="google_chrome_strings_zh-TW.pak" type="data_package" lang="zh-TW" />
    <output filename="google_chrome_strings_fake-bidi.pak" type="data_package" lang="fake-bidi" />
  </outputs>
  <translations>
    <file path="resources/google_chrome_strings_am.xtb" lang="am" />
    <file path="resources/google_chrome_strings_ar.xtb" lang="ar" />
    <file path="resources/google_chrome_strings_bg.xtb" lang="bg" />
    <file path="resources/google_chrome_strings_bn.xtb" lang="bn" />
    <file path="resources/google_chrome_strings_ca.xtb" lang="ca" />
    <file path="resources/google_chrome_strings_cs.xtb" lang="cs" />
    <file path="resources/google_chrome_strings_da.xtb" lang="da" />
    <file path="resources/google_chrome_strings_de.xtb" lang="de" />
    <file path="resources/google_chrome_strings_el.xtb" lang="el" />
    <file path="resources/google_chrome_strings_en-GB.xtb" lang="en-GB" />
    <file path="resources/google_chrome_strings_es.xtb" lang="es" />
    <file path="resources/google_chrome_strings_es-419.xtb" lang="es-419" />
    <file path="resources/google_chrome_strings_et.xtb" lang="et" />
    <file path="resources/google_chrome_strings_fa.xtb" lang="fa" />
    <file path="resources/google_chrome_strings_fi.xtb" lang="fi" />
    <file path="resources/google_chrome_strings_fil.xtb" lang="fil" />
    <file path="resources/google_chrome_strings_fr.xtb" lang="fr" />
    <file path="resources/google_chrome_strings_gu.xtb" lang="gu" />
    <file path="resources/google_chrome_strings_hi.xtb" lang="hi" />
    <file path="resources/google_chrome_strings_hr.xtb" lang="hr" />
    <file path="resources/google_chrome_strings_hu.xtb" lang="hu" />
    <file path="resources/google_chrome_strings_id.xtb" lang="id" />
    <file path="resources/google_chrome_strings_it.xtb" lang="it" />
    <!-- The translation console uses 'iw' for Hebrew, but we use 'he'. -->
    <file path="resources/google_chrome_strings_iw.xtb" lang="he" />
    <file path="resources/google_chrome_strings_ja.xtb" lang="ja" />
    <file path="resources/google_chrome_strings_kn.xtb" lang="kn" />
    <file path="resources/google_chrome_strings_ko.xtb" lang="ko" />
    <file path="resources/google_chrome_strings_lt.xtb" lang="lt" />
    <file path="resources/google_chrome_strings_lv.xtb" lang="lv" />
    <file path="resources/google_chrome_strings_ml.xtb" lang="ml" />
    <file path="resources/google_chrome_strings_mr.xtb" lang="mr" />
    <file path="resources/google_chrome_strings_ms.xtb" lang="ms" />
    <file path="resources/google_chrome_strings_nl.xtb" lang="nl" />
    <file path="resources/google_chrome_strings_no.xtb" lang="no" />
    <file path="resources/google_chrome_strings_pl.xtb" lang="pl" />
    <file path="resources/google_chrome_strings_pt-BR.xtb" lang="pt-BR" />
    <file path="resources/google_chrome_strings_pt-PT.xtb" lang="pt-PT" />
    <file path="resources/google_chrome_strings_ro.xtb" lang="ro" />
    <file path="resources/google_chrome_strings_ru.xtb" lang="ru" />
    <file path="resources/google_chrome_strings_sk.xtb" lang="sk" />
    <file path="resources/google_chrome_strings_sl.xtb" lang="sl" />
    <file path="resources/google_chrome_strings_sr.xtb" lang="sr" />
    <file path="resources/google_chrome_strings_sv.xtb" lang="sv" />
    <file path="resources/google_chrome_strings_sw.xtb" lang="sw" />
    <file path="resources/google_chrome_strings_ta.xtb" lang="ta" />
    <file path="resources/google_chrome_strings_te.xtb" lang="te" />
    <file path="resources/google_chrome_strings_th.xtb" lang="th" />
    <file path="resources/google_chrome_strings_tr.xtb" lang="tr" />
    <file path="resources/google_chrome_strings_uk.xtb" lang="uk" />
    <file path="resources/google_chrome_strings_vi.xtb" lang="vi" />
    <file path="resources/google_chrome_strings_zh-CN.xtb" lang="zh-CN" />
    <file path="resources/google_chrome_strings_zh-TW.xtb" lang="zh-TW" />
  </translations>
  <release seq="1" allow_pseudo="false">
    <messages fallback_to_english="true">
      <message name="IDS_PROFILES_DISCONNECT_MANAGED_PROFILE_TEXT" desc="Message explaining to the user what will happen if they disconnect the managed profile.">
        Disconnecting <ph name="USERNAME">$1<ex>someone@example.com</ex></ph> will clear your history, bookmarks, settings, and other Chrome data stored on this device. Data stored in your Google Account will not be cleared and can be managed on <ph name="GOOGLE_DASHBOARD_LINK">&lt;a target="_blank" href="$2"&gt;</ph>Google Dashboard<ph name="END_GOOGLE_DASHBOARD_LINK">&lt;/a&gt;</ph>.
      </message>
      <message name="IDS_PRODUCT_NAME" desc="The Chrome application name">
        Google Chrome
      </message>
      <message name="IDS_SHORT_PRODUCT_NAME" desc="The Chrome application short name">
        Chrome
      </message>
      <if expr="is_win">
        <message name="IDS_SXS_SHORTCUT_NAME" desc="The Chrome short cut name for SxS channel">
          Google Chrome Canary
        </message>
        <message name="IDS_PRODUCT_DESCRIPTION" desc="Browser description">
          Google Chrome is a web browser that runs webpages and applications with lightning speed. It's fast, stable, and easy to use. Browse the web more safely with malware and phishing protection built into Google Chrome.
        </message>
        <message name="IDS_APP_LAUNCHER_PRODUCT_DESCRIPTION" desc="App Launcher description">
          Google Chrome App Launcher is a standalone platform for Chrome apps.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_PRODUCT_OS_NAME" desc="The Chrome OS application name">
          Google Chrome OS
        </message>
        <message name="IDS_SHORT_PRODUCT_OS_NAME" desc="The Chrome OS application short name">
          Chrome OS
        </message>
      </if>
      <if expr="is_win">
        <message name="IDS_PRODUCT_APP_LAUNCHER_NAME" desc="The Chrome App Launcher application name">
          Google Chrome App Launcher
        </message>
        <message name="IDS_PRODUCT_BINARIES_NAME" desc="The Chrome Binaries application name">
          Google Chrome Binaries
        </message>
        <message name="IDS_CHROME_FRAME_TURNDOWN_LEARN_MORE_URL" desc="Link to knowledge-base article about Chrome Frame turndown">
          http://support.google.com/chrome/?p=ib_chromeframe
        </message>
        <message name="IDS_CHROME_FRAME_TURNDOWN_TEXT_IE_OLDER" desc="Text of Chrome Frame turndown prompt for IE 6, 7, and 8">
          This site is using the retired Chrome Frame plug-in which no longer receives security and stability updates. Please uninstall it and upgrade to a modern browser.
        </message>
        <message name="IDS_CHROME_FRAME_TURNDOWN_TEXT_IE_NEWER" desc="Text of Chrome Frame turndown prompt for IE 9 and 10">
          This site is using the retired Chrome Frame plug-in which no longer receives security and stability updates. Please uninstall it and upgrade to a modern browser.
        </message>
        <message name="IDS_SHORTCUT_NEW_WINDOW" desc="The text label of the New window shortcut context menu entry as of Windows 8">
          New window
        </message>
      </if>
      <message name="IDS_CERT_ERROR_COMMON_NAME_INVALID_EXTRA_INFO_2" desc="2nd paragraph of extra information for an unsafe common name in an X509 certificate">
        In this case, the address listed in the certificate does not match the address of the website your browser tried to go to. One possible reason for this is that your communications are being intercepted by an attacker who is presenting a certificate for a different website, which would cause a mismatch. Another possible reason is that the server is set up to return the same certificate for multiple websites, including the one you are attempting to visit, even though that certificate is not valid for all of those websites. Google Chrome can say for sure that you reached &lt;strong&gt;<ph name="DOMAIN2">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but cannot verify that that is the same site as &lt;strong&gt;<ph name="DOMAIN">$2<ex>www.paypal.com</ex></ph>&lt;/strong&gt; which you intended to reach. If you proceed, Chrome will not check for any further name mismatches.
      </message>
      <message name="IDS_CERT_ERROR_EXPIRED_DETAILS" desc="Details for an expired X509 certificate">
        You attempted to reach &lt;strong&gt;<ph name="DOMAIN">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but the server presented an expired certificate. No information is available to indicate whether that certificate has been compromised since its expiration. This means Google Chrome cannot guarantee that you are communicating with &lt;strong&gt;<ph name="DOMAIN2">$2<ex>paypal.com</ex></ph>&lt;/strong&gt; and not an attacker. Your computer's clock is currently set to <ph name="CURRENT_TIME">$3<ex>Monday, July 18th, 2012 12:31PM</ex></ph>. Does that look right? If not, you should correct the error and refresh this page.
      </message>
      <message name="IDS_CERT_ERROR_NOT_YET_VALID_DETAILS" desc="Details for an X509 certificate that is not yet valid">
        You attempted to reach &lt;strong&gt;<ph name="DOMAIN">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but the server presented a certificate that is not yet valid. No information is available to indicate whether that certificate can be trusted. Google Chrome cannot reliably guarantee that you are communicating with &lt;strong&gt;<ph name="DOMAIN2">$2<ex>paypal.com</ex></ph>&lt;/strong&gt; and not an attacker. Your computer's clock is currently set to <ph name="CURRENT_TIME">$3<ex>Monday, July 18th, 2012 12:31PM</ex></ph>. Does that look right? If not, you should correct your system's clock and then refresh this page.
      </message>
      <if expr="is_ios">
        <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_DETAILS" desc="Details for an X509 certificate with an invalid authority">
          You attempted to reach &lt;strong&gt;<ph
name="DOMAIN">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but the server presented a certificate issued by an entity that is not trusted by Google Chrome. This may mean that the server has generated its own security credentials, which Chrome cannot rely on for identity information, or an attacker may be trying to intercept your communications.
        </message>
      </if>
      <if expr="not is_ios">
        <message name="IDS_CERT_ERROR_AUTHORITY_INVALID_DETAILS" desc="Details for an X509 certificate with an invalid authority">
          You attempted to reach &lt;strong&gt;<ph name="DOMAIN">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but the server presented a certificate issued by an entity that is not trusted by your computer's operating system. This may mean that the server has generated its own security credentials, which Chrome cannot rely on for identity information, or an attacker may be trying to intercept your communications.
        </message>
      </if>
      <message name="IDS_CERT_ERROR_CONTAINS_ERRORS_DETAILS" desc="Details of the error page for an X509 certificate that contains errors">
        You attempted to reach &lt;strong&gt;<ph name="DOMAIN">$1<ex>paypal.com</ex></ph>&lt;/strong&gt;, but the certificate that the server presented contains errors. Google Chrome cannot use a certificate with errors and cannot validate the identity of the site that you have attempted to connect to.
      </message>
      <message name="IDS_TASK_MANAGER_TITLE" desc="The title of the Task Manager window">
        Task Manager - Google Chrome
      </message>
      <message name="IDS_SESSION_CRASHED_VIEW_MESSAGE" desc="Message shown when the last session didn't exit cleanly.">
        Google Chrome didn't shut down correctly. To reopen the pages you had open, click Restore.
      </message>
      <message name="IDS_SESSION_CRASHED_VIEW_UMA_OPTIN" desc="Text besides the checkbox to let users optin to UMA in the restore from previous crash bubble.">
        Help make Google Chrome better by sending crash reports and <ph name="UMA_LINK">$1<ex>usage statistics</ex></ph> to Google
      </message>
      <!-- Browser Window Title Format -->
      <message name="IDS_BROWSER_WINDOW_TITLE_FORMAT" desc="The format for titles displayed in tabs and popup windows">
        <ph name="PAGE_TITLE">$1<ex>Google</ex></ph> - Google Chrome
      </message>
      <if expr="not chromeos">
        <message name="IDS_GET_HELP_USING_CHROME" desc="Text of the button which takes the user to the Chrome help page.">
          Get help with using Chrome
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_GET_HELP_USING_CHROME" desc="Text of the button which takes the user to the Chrome help page.">
          Get help with using Chrome OS
        </message>
      </if>
      <message name="IDS_ABOUT_VERSION_COMPANY_NAME" desc="Company name on the about pages">
        Google Inc.
      </message>
      <message name="IDS_ABOUT_VERSION_COPYRIGHT" desc="Copyright information on the about pages">
        Copyright <ph name="YEAR">$1</ph> Google Inc. All rights reserved.
      </message>
      <message name="IDS_ABOUT_VERSION_LICENSE" desc="The label below the copyright message, containing the URLs.">
        Google Chrome is made possible by the <ph name="BEGIN_LINK_CHROMIUM">&lt;a target="_blank" href="$1"&gt;</ph>Chromium<ph name="END_LINK_CHROMIUM">&lt;/a&gt;</ph> open source project and other <ph name="BEGIN_LINK_OSS">&lt;a target="_blank" href="$2"&gt;</ph>open source software<ph name="END_LINK_OSS">&lt;/a&gt;</ph>.
      </message>
      <if expr="chromeos">
        <message name="IDS_ABOUT_VERSION_LICENSE_EULA" desc="The label below the copyright message, containing the URLs.">
          Chrome open source licenses
        </message>
        <message name="IDS_ABOUT_CROS_VERSION_LICENSE" desc="Additional text displayed beneath the Chromium open source URLs for Chrome OS.">
          Chrome OS is made possible by additional <ph name="BEGIN_LINK_CROS_OSS">&lt;a target="_blank" href="$1"&gt;</ph>open source software<ph name="END_LINK_CROS_OSS">&lt;/a&gt;</ph>.
        </message>
        <message name="IDS_ABOUT_CROS_VERSION_LICENSE_EULA"  desc="Additional text displayed beneath the Chromium open source URLs for Chrome OS.">
          Chrome OS open source licenses
        </message>
      </if>
      <message name="IDS_ABOUT_TERMS_OF_SERVICE" desc="The terms of service label in the About box.">
        Google Chrome <ph name="TERMS_OF_SERVICE_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Terms of Service<ph name="END_TERMS_OF_SERVICE_LINK">&lt;/a&gt;</ph>
      </message>
      <if expr="is_macosx">
        <!-- Mac 32-bit deprecation -->
        <message name="IDS_MAC_32_BIT_OBSOLETE_SOON" desc="A message displayed on an at-launch infobar and About (Help) page warning the user that the computer they are using is about to become unsupported.">
          This computer will soon stop receiving Google Chrome updates because its hardware is no longer supported.
        </message>
        <message name="IDS_MAC_32_BIT_OBSOLETE_NOW" desc="A message displayed on an at-launch infobar and About (Help) page warning the user that the computer they are using is no longer supported.">
          This computer will no longer receive Google Chrome updates because its hardware is no longer supported.
        </message>
      </if>
      <if expr="is_win">
        <!-- Windows non-SSE2 deprecation -->
        <message name="IDS_WIN_SSE_OBSOLETE_NOW" desc="A message displayed on an at-launch infobar and About (Help) page warning the user that the computer they are using is no longer supported.">
          This computer will no longer receive Google Chrome updates because its hardware is no longer supported.
        </message>
      </if>
      <message name="IDS_ACCNAME_APP" desc="The accessible name for the app menu.">
        Chrome
      </message>
      <message name="IDS_ACCNAME_TOOLBAR" desc="The accessible name for the application's toolbar.">
        Google Chrome Toolbar
      </message>
      <!-- Hung Browser Detector -->
      <if expr="is_win">
        <message name="IDS_BROWSER_HUNGBROWSER_MESSAGE" desc="Content of the dialog box shown when the browser is hung">
          Google Chrome is unresponsive. Relaunch now?
        </message>
      </if>
      <message name="IDS_IMPORT_FIND_YOUR_BOOKMARKS" desc="Helpful reminder for where to find imported bookmarks">
        Find your bookmarks in the Chrome menu or on the bookmarks bar.
      </message>
      <message name="IDS_IMPORTER_LOCK_TEXT" desc="The message to be displayed on dialog">
        Sadly, your Mozilla Firefox settings are not available while that browser is running. To import those settings to Google Chrome, save your work and close all Firefox windows. Then click Continue.
      </message>
      <!-- Uninstall messages -->
      <if expr="is_win">
        <message name="IDS_UNINSTALL_CLOSE_APP" desc="Message to user when uninstall detects other app instance running">
          Please close all Google Chrome windows and try again.
        </message>
        <message name="IDS_UNINSTALL_CLOSE_APP_IMMERSIVE" desc="Message to user when uninstall detects other app instance running, possibly in the Windows 8 immersive mode">
          Please close all Google Chrome windows (including those in Windows 8 mode) and try again.
        </message>
        <message name="IDS_UNINSTALL_VERIFY" desc="Message to confirm user wants to uninstall">
          Are you sure you want to uninstall Google Chrome?
        </message>
        <message name="IDS_UNINSTALL_CHROME" desc="The text of the shortcut in the Start Menu for uninstalling chrome.">
          Uninstall Google Chrome
        </message>
        <message name="IDS_UNINSTALL_APP_LAUNCHER" desc="The text of the shortcut in the Start Menu for uninstalling App Launcher.">
          Uninstall Google Chrome App Launcher
        </message>
      </if>
      <message name="IDS_FR_CUSTOMIZE_DEFAULT_BROWSER" desc="Default browser checkbox label">
        Make Google Chrome the default browser
      </message>
      <if expr="chromeos">
        <message name="IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE"
                 desc="Title for the hard-coded thumbnail that represents the Google Chrome Welcome page.  This is used on the NTP when there aren't enough thumbnails to show.">
          Get Started with Chrome OS
        </message>
      </if>
      <if expr="is_ios">
        <message name="IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE"
                 desc="Title for the hard-coded thumbnail that represents the Google Chrome Welcome page.  This is used on the NTP when there aren't enough thumbnails to show. [Length: 14em]">
          Welcome
        </message>
      </if>
      <if expr="not chromeos and not is_ios">
        <message name="IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE"
                 desc="Title for the hard-coded thumbnail that represents the Google Chrome OS Welcome page. This is used on the NTP when there aren't enough thumbnails to show.">
          Welcome to Google Chrome
        </message>
      </if>
      <if expr="not chromeos">
        <message name="IDS_EXTERNAL_PROTOCOL_INFORMATION" desc="General information about what Chrome is trying to do when opening this external protocol">
          Google Chrome needs to launch an external application to handle <ph name="SCHEME">$1<ex>acrobat:</ex></ph> links. The link requested is <ph name="PROTOLINK">$2<ex>acrobat:yourpdf</ex></ph>.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_EXTERNAL_PROTOCOL_INFORMATION" desc="General information about what Chrome is trying to do when opening this external protocol">
          Google ChromeOS does not support launching an external application to handle <ph name="SCHEME">$1<ex>acrobat:</ex></ph> links. The link requested is <ph name="PROTOLINK">$2<ex>acrobat:yourpdf</ex></ph>.
        </message>
      </if>
      <!-- Strings used to warn that an OS is not supported -->
      <if expr="is_win">
        <message name="IDS_UNSUPPORTED_OS_PRE_WIN_XP" desc="The text used to warn the user that Windows pre-XP is not supported">
          Google Chrome requires Windows XP or later. Some features may not work.
        </message>
      </if>
      <if expr="not chromeos">
        <message name="IDS_OPTIONS_RELAUNCH_REQUIRED" desc="The message displayed for an option that requires a relaunch to take effect. This appears in a message box if an option is changed that requires a relaunch.">
          Please close all Google Chrome windows and relaunch it for this change to take effect.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_OPTIONS_RELAUNCH_REQUIRED" desc="The message displayed for an option that requires a relaunch to take effect. This appears in a message box if an option is changed that requires a relaunch.">
          Please sign out and sign in again for this change to take effect.
        </message>
      </if>
      <if expr="use_titlecase">
        <message name="IDS_STATUS_TRAY_KEEP_CHROME_RUNNING_IN_BACKGROUND" desc="In Title Case: The checkbox in the status tray context menu that controls whether chrome keeps running in the background after the last window is closed">
          Let Google Chrome Run In The Background
        </message>
      </if>
      <if expr="not use_titlecase">
        <message name="IDS_STATUS_TRAY_KEEP_CHROME_RUNNING_IN_BACKGROUND" desc="The checkbox in the status tray context menu that controls whether chrome keeps running in the background after the last window is closed">
          Let Google Chrome run in the background
        </message>
      </if>
      <message name="IDS_OPTIONS_SYSTEM_ENABLE_BACKGROUND_MODE" desc="The label of the check-box that enables background mode">
        Continue running background apps when Google Chrome is closed
      </message>
      <message name="IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE" desc="The label of the check-box that enables hardware acceleration mode">
        Use hardware acceleration when available
      </message>
      <message name="IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE_RESTART" desc="The restart string after changing hardware acceleration mode">
        (requires Chrome <ph name="BEGIN_BUTTON">&lt;button id="gpu-mode-reset-restart-button" type="button" class="link-button standalone-link-button"&gt;</ph>restart<ph name="END_BUTTON">&lt;/button&gt;</ph>)
      </message>
      <message name="IDS_CANT_WRITE_USER_DIRECTORY_SUMMARY" desc="Summary of problem displayed in dialog when we can't create a directory for this user.">
Google Chrome cannot read and write to its data directory:

<ph name="USER_DATA_DIRECTORY">$1<ex>C:\Documents and Settings\devint\Local Settings\Application Data\Google\Chrome</ex></ph>
      </message>
      <if expr="chromeos">
        <message name="IDS_EULA_CHECKBOX_ENABLE_LOGGING" desc="The label of the checkbox to enable/disable crash and user metrics logging on EULA screen.">
          Optional: Help make Chrome OS better by automatically sending usage statistics and crash reports to Google.
        </message>
      </if>
      <message name="IDS_PROFILE_TOO_NEW_ERROR" desc="Error displayed on startup when the profile is from a newer version of the product and can not be read">
Your profile can not be used because it is from a newer version of Google Chrome.

Some features may be unavailable. Please specify a different profile directory or use a newer version of Chrome.
      </message>
      <message name="IDS_PREFERENCES_UNREADABLE_ERROR" desc="Error displayed on startup when user preferences file can not be read">
Your preferences can not be read.

Some features may be unavailable and changes to preferences won't be saved.
      </message>
      <message name="IDS_PREFERENCES_CORRUPT_ERROR" desc="Error displayed on startup when user preferences file can not be read">
Your preferences file is corrupt or invalid.

Google Chrome is unable to recover your settings.
      </message>
      <!-- Crash Recovery Dialog -->
      <message name="IDS_CRASH_RECOVERY_TITLE" desc="Title of dialog shown when the browser crashes.">
        Google Chrome
      </message>
      <if expr="is_win">
        <message name="IDS_CRASH_RECOVERY_CONTENT" desc="Text content telling the user the browser has crashed.">
          Whoa! Google Chrome has crashed. Relaunch now?
        </message>
      </if>
      <message name="IDS_PASSWORD_GENERATION_SUGGESTION" desc="Text shown next to a generated password describing it as a suggestion.">
        Suggested by Chrome
      </message>
      <if expr="not is_android">
        <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Info bar message to save a password">
          Do you want Google Chrome to save your password?
        </message>
      </if>
      <if expr="is_android">
        <message name="IDS_PASSWORD_MANAGER_SAVE_PASSWORD_PROMPT" desc="Mobile: Info bar message to save a password">
          Do you want Google Chrome to save your password for this site?
        </message>
      </if>
      <if expr="is_macosx">
        <message name="IDS_PASSWORDS_PAGE_AUTHENTICATION_PROMPT" desc="Text for the dialog box that prompts the user for their OS account password before revealing plaintext passwords on the password page.">
          Google Chrome is trying to show passwords.
        </message>
      </if>
      <if expr="is_win">
        <message name="IDS_PASSWORDS_PAGE_AUTHENTICATION_PROMPT" desc="Text for the dialog box that prompts the user for their OS account password before revealing plaintext passwords on the password page.">
          Google Chrome is trying to show passwords. Type your Windows password to allow this.
        </message>
        <message name="IDS_MACHINE_LEVEL_INSTALL_CONFLICT" desc="Error message to display when user tries to run user level Chromium even though machine level Chromium is already installed.">
          An administrator has installed Google Chrome on this system, and it is available for all users. The system-level Google Chrome will replace your user-level installation now.
        </message>
        <message name="IDS_INSTALL_HIGHER_VERSION" desc="Error displayed when higher version already exists.">
          This computer already has a more recent version of Google Chrome. If the software is not working, please uninstall Google Chrome and try again.
        </message>
        <message name="IDS_INSTALL_HIGHER_VERSION_APP_LAUNCHER" desc="Error displayed when higher version of the Chrome App Launcher already exists.">
          This computer already has a more recent version of the Google Chrome components. Please use a more recent installer.
        </message>
        <message name="IDS_INSTALL_FAILED" desc="Error displayed if installation fails due to some unknown error.">
          Installation failed due to unspecified error. If Google Chrome is currently running, please close it and try again.
        </message>
        <message name="IDS_SAME_VERSION_REPAIR_FAILED" desc="Error displayed if installation fails due to Chrome running.">
          Can not install the same Google Chrome version that is currently running. Please close Google Chrome and try again.
        </message>
        <message name="IDS_SETUP_PATCH_FAILED" desc="Error message when setup.exe fails to patch itself.">
          Installation failed due to unspecified error. Please download Google Chrome again.
        </message>
        <message name="IDS_INSTALL_OS_NOT_SUPPORTED" desc="Error displayed if OS is not supported">
          Google Chrome requires Windows Vista or Windows XP with SP2 or higher.
        </message>
        <message name="IDS_INSTALL_OS_ERROR" desc="Error displayed when any Windows API call fails and we do not have more specific information.">
          An operating system error occurred during installation. Please download Google Chrome again.
        </message>
        <message name="IDS_INSTALL_TEMP_DIR_FAILED" desc="Error displayed when we fail to create temporary directory during installation.">
          The installer couldn't create a temporary directory. Please check for free disk space and permission to install software.
        </message>
        <message name="IDS_INSTALL_UNCOMPRESSION_FAILED" desc="Error when when we can not uncompress installation archive.">
          The installer failed to uncompress archive. Please download Google Chrome again.
        </message>
        <message name="IDS_INSTALL_INVALID_ARCHIVE" desc="Error displayed when we can not open the installation archive.">
          The installer archive is corrupted or invalid. Please download Google Chrome again.
        </message>
        <message name="IDS_INSTALL_INSUFFICIENT_RIGHTS" desc="Error displayed when a non admin user tries to attempt system level install/uninstall.">
          You do not have appropriate rights for system-level install. Try running the installer again as Administrator.
        </message>
        <message name="IDS_INSTALL_NO_PRODUCTS_TO_UPDATE" desc="Error displayed if the installer is not provided one or more products to install/update.">
          No installation of Google Chrome found to update.
        </message>
        <message name="IDS_INSTALL_MULTI_INSTALLATION_EXISTS" desc="Error during install if a multi-install Google Chrome is present, thereby preventing the installation of a single-install Google Chrome.">
          A conflicting installation of Google Chrome was found on the system. Please uninstall it and try again.
        </message>
        <message name="IDS_INSTALL_INCONSISTENT_UPDATE_POLICY" desc="Error during install if the update policies settings in Group Policy are inconsistent.">
          Google Chrome cannot be updated due to inconsistent Google Update Group Policy settings. Use the Group Policy Editor to set the update policy override for the Google Chrome Binaries application and try again; see http://goo.gl/uJ9gV for details.
        </message>
      </if>
      <!-- Options Dialog -->
      <message name="IDS_OPTIONS_IMPROVE_BROWSING_EXPERIENCE" desc="The text in the options panel that describes how we use web services to improve browsing experience.">
        Google Chrome may use web services to improve your browsing experience.
      </message>
      <if expr="is_win">
        <message name="IDS_OEM_MAIN_SHORTCUT_NAME" desc="Name of the desktop shortcut to start the application for OEM pre-installations.">
          Internet Browser
        </message>
        <message name="IDS_SHORTCUT_TOOLTIP" desc="Text for the hover-on tooltip for the Google Chrome shortcuts.">
          Access the Internet
        </message>
        <message name="IDS_APP_LAUNCHER_SHORTCUT_TOOLTIP" desc="Text for the hover-on tooltip for the App Launcher shortcut.">
          Launch Chrome apps
        </message>
        <message name="IDS_UNINSTALL_DELETE_PROFILE" desc="Text to show user to ask whether to delete all the profile data also during uninstallation.">
          Also delete your browsing data?
        </message>
        <message name="IDS_UNINSTALL_SET_DEFAULT_BROWSER" desc="Text to ask whether to set another browser as default when Chromium is uninstalled.">
          Change default browser to:
        </message>
        <message name="IDS_UNINSTALL_BUTTON_TEXT" desc="Label for uninstall button on Uninstall confirmation dialog.">
          Uninstall
        </message>
      </if>
      <message name="IDS_DEFAULT_BROWSER_INFOBAR_SHORT_TEXT" desc="More compact text to show in the default browser query infobar.">
        Google Chrome isn't your default browser.
      </message>
      <if expr="chromeos">
        <message name="IDS_SYNC_OVERVIEW" desc="Chrome OS: The message that appears in the options dialog when sync has not been set up by the user.">
          Set up Sync to save your personalized browser features to the web and access them from Google Chrome on any computer.
        </message>
      </if>
      <if expr="is_win">
        <!-- Try Chrome Toast Dialog -->
        <message name="IDS_TRY_TOAST_HEADING" desc="Top line of the try-chrome-again dialog">
          There is a new version of Google Chrome available.
        </message>
        <message name="IDS_TRY_TOAST_HEADING2" desc="Top line of the try-chrome-again dialog">
          There's a new version of Google Chrome available, and it's faster than ever.
        </message>
        <message name="IDS_TRY_TOAST_HEADING3" desc="Top line of the try-chrome-again dialog">
          There's a new, safer version of Google Chrome available.
        </message>
        <message name="IDS_TRY_TOAST_HEADING4" desc="Top line of the try-chrome-again dialog">
          Google Chrome has been updated, but you haven't used it for at least 30 days.
        </message>
        <message name="IDS_TRY_TOAST_HEADING_SKYPE" desc="Top line of the try-chrome-again dialog">
          Google Chrome lets you click a phone number on the web and call it with Skype!
        </message>
        <message name="IDS_TRY_TOAST_TRY_OPT" desc="First option radio button on the dialog to try chrome">
          Try it out, it's already installed
        </message>
        <message name="IDS_TRY_TOAST_CANCEL" desc="Try chrome again dialog Cancel button">
          Don't bug me
        </message>
        <message name="IDS_TRY_TOAST_WHY" desc="Text of the url link that explains why this dialog is being shown">
          Why am I seeing this?
        </message>
        <!-- about:conflicts strings -->
        <message name="IDS_CONFLICTS_CHECK_PAGE_TITLE_LONG" desc="The long title on the compatibility page">
          Modules loaded into Google Chrome
        </message>
        <message name="IDS_CONFLICTS_CHECK_WARNING_CONFIRMED" desc="Warning label on the compatibility page">
          This module is known to conflict with Google Chrome.
        </message>
        <message name="IDS_CONFLICTS_CHECK_WARNING_SUSPECTED" desc="Warning label on the compatibility page">
          A module with the same name has been known to conflict with Google Chrome.
        </message>
      </if>
      <!-- chrome://crashes strings -->
      <message name="IDS_CRASHES_DISABLED_MESSAGE" desc="The explanatory message for chrome://crashes when crash reporting is disabled">
        This page only shows information on your recent crashes if you <ph name="BEGIN_LINK">&lt;a href="https://www.google.com/support/chrome/bin/answer.py?answer=96817"&gt;</ph>enable crash reporting<ph name="END_LINK">&lt;/a&gt;</ph>.
      </message>
      <!-- Page Info bubble -->
      <message name="IDS_PAGE_INFO_INTERNAL_PAGE" desc="Message to display in the page info bubble when the page you are on is a chrome:// page or about:something.">
        You are viewing a secure Google Chrome page.
      </message>
      <!-- Print Preview -->
      <message name="IDS_PRINT_PREVIEW_NO_PLUGIN" desc="Message to display when the PDF viewer is missing.">
        Google Chrome cannot show the print preview when the built-in PDF viewer is missing.
      </message>

      <!-- Download Shelf Items -->
      <message name="IDS_DOWNLOAD_STATUS_CRX_INSTALL_RUNNING"
               desc="Message shown when a CRX has been downloaded and is being unpacked.">
        Adding to Chrome...
      </message>

      <message name="IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS"
               desc="Message shown on the download shelf when the download is known to change settings in the browser.">
        <ph name="FILE_NAME">$1<ex>bla.exe</ex></ph> may harm your browsing experience, so Chrome has blocked it.
      </message>

      <message name="IDS_PROMPT_MALICIOUS_DOWNLOAD_URL"
         desc="Message shown to the user to validate the download when the download url is classified to lead to malware by the safebrowsing database.">
        This file is malicious, and Chrome has blocked it.
      </message>
      <message name="IDS_PROMPT_MALICIOUS_DOWNLOAD_CONTENT"
         desc="Message shown to the user to validate the download when the download content is classified to lead to malware by safebrowsing.">
        <ph name="FILE_NAME">$1<ex>malware.exe</ex></ph> is malicious, and Chrome has blocked it.
      </message>

      <!-- Remove in-progress downloads confirmation dialog -->
      <message name="IDS_SINGLE_DOWNLOAD_REMOVE_CONFIRM_EXPLANATION" desc="Explanation of the dialog asking for user confirmation to close the browser when one download is in progress.">
        A download is currently in progress. Do you want to exit Google Chrome and cancel the download?
      </message>
      <message name="IDS_MULTIPLE_DOWNLOADS_REMOVE_CONFIRM_EXPLANATION" desc="Explanation of the dialog asking for user confirmation to close the browser when multiple downloads are in progress.">
        Downloads are currently in progress. Do you want to exit Google Chrome and cancel the downloads?
      </message>
      <message name="IDS_DOWNLOAD_REMOVE_CONFIRM_OK_BUTTON_LABEL" desc="Button text for OKing to close the browser when one or more downloads are in progress.">
        Yes, exit Chrome
      </message>

      <!-- Quit all apps confirmation dialog -->
      <if expr="is_macosx">
        <message name="IDS_QUIT_WITH_APPS_TITLE" desc="Title for a notification explaining that Chrome is running in the background.">
          Google Chrome is running in the background.
        </message>
      </if>

      <!-- Autolaunch infobar -->
      <if expr="is_win">
        <message name="IDS_AUTO_LAUNCH_INFOBAR_TEXT" desc="The text to show in the infobar when Chrome was automatically launched on startup">
          Google Chrome is configured to automatically launch when you start your computer.
        </message>
      </if>

      <!-- about:flags -->
      <if expr="not chromeos">
        <message name="IDS_FLAGS_RELAUNCH_NOTICE" desc="Notifies the user that he needs to relaunch Chrome. Shown next to a button that says 'Relaunch Now'.">
          Your changes will take effect the next time you relaunch Google Chrome.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_FLAGS_RELAUNCH_NOTICE" desc="Notifies the user that he needs to restart Chrome OS. Shown next to a button that says 'Restart Now'.">
          Your changes will take effect the next time you restart your device.
        </message>
      </if>

      <!-- Obsolete System info bar -->
      <message name="IDS_SYSTEM_OBSOLETE_MESSAGE" desc="Message shown when your OS is no longer supported. This message is followed by a 'Learn more' link.">
         Google Chrome has stopped updating and no longer supports this version of your operating system.
      </message>

      <!-- Google API keys info bar -->
      <message name="IDS_MISSING_GOOGLE_API_KEYS" desc="Message shown when Google API keys are missing. This message is followed by a 'Learn more' link.">
        Google API keys are missing. Some functionality of Google Chrome will be disabled.
      </message>

      <!-- about:memory -->
      <if expr="not is_android">
        <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Google Chrome and any other active browsers." translateable="false">
Summary of memory used by currently active browsers. For browsers which use multiple processes, memory reflects aggregate memory used across all browser processes.

For Google Chrome, processes used to display diagnostics information (such as this "about:memory") are excluded.
        </message>
      </if>
      <if expr="is_android">
        <message name="IDS_MEMORY_USAGE_SUMMARY_DESC" desc="Describes the browser summary table in the about memory page, which shows memory usage for Google Chrome." translateable="false">
Summary of memory used by Google Chrome. Since Google Chrome uses multiple processes, memory reflects aggregate memory used across all browser processes.

For Google Chrome, processes used to display diagnostics information (such as this "about:memory") are excluded.
        </message>
      </if>

      <!-- About Chrome page -->
      <if expr="not chromeos">
        <message name="IDS_UPGRADE_SUCCESSFUL_RELAUNCH" desc="Status label: Successfully updated Google Chrome">
          Nearly up-to-date! Relaunch Google Chrome to finish updating.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_UPGRADE_SUCCESSFUL_RELAUNCH" desc="Status label: Successfully updated Chrome OS">
          Nearly up-to-date! Restart your device to finish updating.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_UPGRADE_SUCCESSFUL_CHANNEL_SWITCH" desc="Status label: Channel was successfully switched on Chrome OS">
          Channel changed. Restart your device to apply changes.
        </message>
      </if>
      <if expr="not chromeos">
        <message name="IDS_UPGRADE_UP_TO_DATE" desc="Status label: Already up to date (Google Chrome)">
          Google Chrome is up to date.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_UPGRADE_UP_TO_DATE" desc="Status label: Already up to date (Chrome OS)">
          Your device is up to date.
        </message>
      </if>
      <if expr="not chromeos">
        <message name="IDS_UPGRADE_UPDATING" desc="Status label: Updating Google Chrome">
          Updating Google Chrome...
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_UPGRADE_UPDATING" desc="Status label: Updating Chrome OS">
          Updating your device...
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_UPGRADE_UPDATING_CHANNEL_SWITCH" desc="Status label: Updating Chrome OS to a specified channel">
          Updating your device to <ph name="CHANNEL_NAME">$1<ex>stable</ex></ph> channel...
        </message>
      </if>

      <!-- iOS Upgrade available info bar-->
      <if expr="is_ios">
        <message name="IDS_UPGRADE_AVAILABLE" desc="Text to inform the user of the presence of a new version of the application">
          Chrome just got better! A new version is available.
        </message>
        <message name="IDS_UPGRADE_AVAILABLE_BUTTON" desc="Diplayed on a button the user can use to upgrade the a more recent version of the application. [Length: 10em]">
          Update
        </message>
      </if>

      <!-- Extension/App install prompt -->
      <message name="IDS_EXTENSION_INLINE_INSTALL_PROMPT_TITLE" desc="Titlebar of the extension or app inline installation prompt window">
        Add to Chrome
      </message>

      <!-- Extension installed bubble -->
      <if expr="enable_extensions">
        <message name="IDS_EXTENSION_INSTALLED_HEADING" desc="First line in the content area of the extension installed bubble. Instructs that the extension was installed.">
          <ph name="EXTENSION_NAME">$1<ex>Gmail Checker</ex></ph> has been added to Chrome.
        </message>
        <message name="IDS_EXTENSION_INSTALLED_SIGNIN_PROMO_LINK" desc="The first part of the sign-in promo paragraph. This part will be converted to a link and will get more text appended to it (see IDS_EXTENSION_INSTALLED_SIGNIN_PROMO). Keep this text short.">
          Sign in to Chrome
        </message>
      </if>

      <!-- chrome://settings/extensions page -->
      <message name="IDS_EXTENSIONS_INCOGNITO_WARNING" desc="Warns the user that Chrome cannot prevent extensions from recording history in incognito mode. Displayed in extensions management UI after an extension is selected to be run in incognito mode.">
        <ph name="BEGIN_BOLD">&lt;b&gt;</ph>Warning:<ph name="END_BOLD">&lt;/b&gt;</ph> Google Chrome cannot prevent extensions from recording your browsing history. To disable this extension in incognito mode, unselect this option.
      </message>
      <message name="IDS_EXTENSIONS_UNINSTALL" desc="The link for uninstalling extensions.">
        Remove from Chrome
      </message>

      <if expr="enable_extensions">
        <message name="IDS_EXTENSIONS_UNSUPPORTED_DISABLED_BODY" desc="Body of the dialog shown when unsupported extensions have been disabled">
          To make Chrome safer, we disabled some extensions that aren't listed in the <ph name="IDS_EXTENSION_WEB_STORE_TITLE">$1<ex>Chrome Web Store</ex></ph> and may have been added without your knowledge.
        </message>
      </if>

      <!-- Wrench menu -->
      <message name="IDS_APPMENU_TOOLTIP" desc="The tooltip to show for the browser menu">
        Customize and control Google Chrome
      </message>

      <if expr="use_titlecase and not chromeos">
        <message name="IDS_ABOUT" desc="In Title Case: The text label of the About Chrome menu item">
          About &amp;Google Chrome
        </message>
        <message name="IDS_UPDATE_NOW" desc="In Title Case: The text label of the Update Chrome Now menu item">
          Update &amp;Google Chrome
        </message>
      </if>
      <if expr="not use_titlecase and not chromeos">
        <message name="IDS_ABOUT" desc="The text label of the About Chrome menu item">
          About &amp;Google Chrome
        </message>
        <message name="IDS_UPDATE_NOW" desc="The text label of the Update Chrome Now menu item">
          Update &amp;Google Chrome
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_ABOUT" desc="The text label of the About Chrome OS menu item">
          About &amp;Chrome OS
        </message>
        <message name="IDS_UPDATE_NOW" desc="The text label of the Update Chrome OS Now menu item">
          Update &amp;Chrome OS
        </message>
      </if>

      <if expr="is_macosx">
        <message name="IDS_APP_MENU_PRODUCT_NAME" desc="The application's short name, used for the Mac's application menu, activity monitor, etc. This should be less than 16 characters. Example: Chrome, not Google Chrome.">
          Chrome
        </message>
        <message name="IDS_HELPER_NAME" desc="The helper application's name.  Should contain the Chrome application name (IDS_PRODUCT_NAME). Example: Google Chrome Helper.">
          Google Chrome Helper
        </message>
        <message name="IDS_SHORT_HELPER_NAME" desc="The helper application's short name, used for the Mac's application menu, activity monitor, etc. Example: Chrome Helper, not Google Chrome Helper.">
          Chrome Helper
        </message>
      </if>

      <!-- Chrome sign-in page -->
      <message name="IDS_CHROME_SIGNIN_TITLE" desc="Title on the about:chrome-signin page">
        Chrome
      </message>

      <!-- Tutorial card in the avatar menu bubble -->
      <message name="IDS_PROFILES_PREVIEW_ENABLED_TUTORIAL_CONTENT_TEXT" desc="The main content of the tutorial card in the avatar menu bubble view shown when user enables the new profile management preview.">
        You can add your other Google Accounts and lock your Chromium below.
      </message>
      <message name="IDS_PROFILES_PREVIEW_TUTORIAL_TITLE" desc="The title of the tutorial card in the avatar menu bubble view that asks the user to preview the new profile management UI.">
        Preview the new Chrome
      </message>
      <message name="IDS_PROFILES_PREVIEW_TUTORIAL_CONTENT_TEXT" desc="The main content of the tutorial card in the avatar menu bubble view that asks the user to preview the new profile management UI.">
       Try the new way to use Chrome with your Google Account and on shared computers.
      </message>
      <message name="IDS_PROFILES_FEEDBACK_TUTORIAL_CONTENT_TEXT" desc="The main content of the tutorial card in the avatar menu bubble view that asks the user to send feedback about the new profile management UI.">
       You're previewing the new Chrome.
      </message>

      <!-- Account removal view in the avatar menu bubble -->
      <message name="IDS_PROFILES_ACCOUNT_REMOVAL_TEXT" desc="Main text of the account removal view when removing a secondary account.">
        After removing your account from Chrome, you may need to reload your open tabs to take effect.
      </message>
      <message name="IDS_PROFILES_PRIMARY_ACCOUNT_REMOVAL_TEXT" desc="Main text of the account removal view when removing a primary account.">
        You're using <ph name="PROFILE_EMAIL">$1<ex>jessica@gmail.com</ex></ph> to sync your Chrome stuff. To update your sync preference or to use Chrome without a Google account, visit <ph name="SETTINGS_LINK">$2<ex>settings</ex></ph>.
      </message>

      <!-- End-preview view in the avatar menu bubble -->
      <message name="IDS_PROFILES_END_PREVIEW_TEXT" desc="Main text of the end-preview view.">
        Thanks for trying out the new Chrome. Chrome needs to restart to make sure you've saved any open work before continuing.
      </message>

      <!-- One click sign-in infobar -->
      <if expr="not chromeos">
        <!-- New one-click sign-in dialog contents for SAML support -->
        <message name="IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW" desc="The title of the modal dialog window that opens when the user chooses to use one click sign-in.">
          You're signed in to Chrome!
        </message>
        <message name="IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW" desc="The message of the one click sign-in dialog.">
          You're signed in as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>. Now you can access your bookmarks, history, and other settings on all your signed in devices.
        </message>
        <message name="IDS_ONE_CLICK_SIGNIN_BUBBLE_SYNC_DISABLED_MESSAGE" desc="The body of the sign-in bubble, when sync has been disabled.">
          You're now signed in to Chrome! Sync is disabled by your administrator.
        </message>
        <message name="IDS_SYNC_WRONG_EMAIL" desc="Message shown when sync setup failed due to the user entering the wrong email address for sign-in.">
          You were signed in to Chrome as <ph name="USER_EMAIL_ADDRESS">$1<ex>foo@gmail.com</ex></ph>. Please use the same account to sign in again.
        </message>
        <message name="IDS_ONE_CLICK_SIGNIN_CONFIRM_EMAIL_DIALOG_MESSAGE" desc="Error message to display when setting up sync for a second time and the user name is different from the previous user name.">
          Someone previously signed in to Chrome on this computer as <ph name="ACCOUNT_EMAIL_LAST">$1<ex>user@example.com</ex></ph>. If that isn't your account, create a new Chrome user to keep your information separate.

Signing in anyway will merge Chrome information like bookmarks, history, and other settings to <ph name="ACCOUNT_EMAIL_NEW">$2<ex>user@example.com</ex></ph>.
        </message>
      </if>

      <!-- Enterprise sign-in profile linking -->
      <if expr="not is_android">
        <message name="IDS_ENTERPRISE_SIGNIN_PROFILE_LINK_DIALOG_TITLE" desc="The title of the dialog to confirm linking the browser profile with the signed-in enterprise account">
          Important information regarding your Chrome data
        </message>
        <message name="IDS_ENTERPRISE_SIGNIN_PROFILE_LINK_MESSAGE" desc="The warning message displayed to an enterprise user about to link their profile to their Google account. This message is followed by a 'Learn more' link.">
          You are signing in with a managed account and giving its administrator control over your Google Chrome profile. Your Chrome data, such as your apps, bookmarks, history, passwords, and other settings will become permanently tied to <ph name="USER_NAME">$1<ex>pat@example.com</ex></ph>. You will be able to delete this data via the Google Accounts Dashboard, but you will not be able to associate this data with another account.
        </message>
        <message name="IDS_ENTERPRISE_SIGNIN_CREATE_NEW_PROFILE_PROMPT" desc="The text of the prompt to create a new profile after signing in to an enterprise account">
          If you prefer to keep your existing Chrome data separate, you can create a new Chrome user for <ph name="USER_NAME">$1<ex>pat@example.com</ex></ph>.
        </message>
        <message name="IDS_ENTERPRISE_SIGNIN_CREATE_NEW_PROFILE_NO" desc="Text of the button to link the current profile with the signed-in enterprise account">
          Link my Chrome data to this account
        </message>
      </if>

      <!-- Enterprise sign-in dialog (new-style) -->
      <!-- TODO(dconnelly): remove "new-style" once the old dialog is gone. -->
      <if expr="toolkit_views or is_macosx">
        <message name="IDS_ENTERPRISE_SIGNIN_TITLE_NEW_STYLE" desc="The title of the dialog to confirm linking the browser profile with the signed-in enterprise account">
          Link your Chrome data to this account?
        </message>
        <message name="IDS_ENTERPRISE_SIGNIN_EXPLANATION_WITHOUT_PROFILE_CREATION_NEW_STYLE" desc="The warning message displayed to an enterprise user about to link their profile to their Google account. This message is followed by a 'Learn more' link.">
          You are signing in with a managed account and giving its administrator control over your Google Chrome profile. Your Chrome data, such as your apps, bookmarks, history, passwords, and other settings will become permanently tied to <ph name="USER_NAME">$1<ex>pat@example.com</ex></ph>. You will be able to delete this data via the Google Accounts Dashboard, but you will not be able to associate this data with another account. <ph name="LEARN_MORE">$2<ex>Learn more</ex></ph>
        </message>
        <message name="IDS_ENTERPRISE_SIGNIN_EXPLANATION_WITH_PROFILE_CREATION_NEW_STYLE" desc="The warning message displayed to an enterprise user about to link their profile to their Google account. Additionally notifies the user that they can create a new profile instead. This message is followed by a 'Learn more' link.">
          You are signing in with a managed account and giving its administrator control over your Google Chrome profile. Your Chrome data, such as your apps, bookmarks, history, passwords, and other settings will become permanently tied to <ph name="USER_NAME">$1<ex>pat@example.com</ex></ph>. You will be able to delete this data via the Google Accounts Dashboard, but you will not be able to associate this data with another account. You can optionally create a new profile to keep your existing Chrome data separate. <ph name="LEARN_MORE">$2<ex>Learn more</ex></ph>
        </message>
      </if>

      <!-- Sync/sign-in error messages -->
      <if expr="not chromeos">
        <message name="IDS_SYNC_PASSPHRASE_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sync error bubble view when the user needs to update their sync passphrase.">
          Google Chrome could not sync your data. Please update your Sync passphrase.
        </message>
        <message name="IDS_SYNC_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error bubble view when the user's sign-in credentials are out of date.">
          Google Chrome could not sync your data because your account sign-in details are out of date.
        </message>
        <message name="IDS_SYNC_UNAVAILABLE_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error bubble view when sync is not available for their domain.">
          Google Chrome could not sync your data because Sync is not available for your domain.
        </message>
        <message name="IDS_SYNC_OTHER_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error bubble view when there's an error signing in.">
          Google Chrome could not sync your data due to an error signing in.
        </message>
      </if>
      <if expr="chromeos">
        <message name="IDS_SYNC_PASSPHRASE_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sync error bubble view when the user needs to update their sync passphrase.">
          Chrome OS could not sync your data. Please update your Sync passphrase.
        </message>
        <message name="IDS_SYNC_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error notification when the user's sign-in credentials are out of date.">
          Chrome OS could not sync your data because your account sign-in details are out of date.
        </message>
        <message name="IDS_SYNC_UNAVAILABLE_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error notification when sync is not available for their domain.">
          Chrome OS could not sync your data because Sync is not available for your domain.
        </message>
        <message name="IDS_SYNC_OTHER_SIGN_IN_ERROR_BUBBLE_VIEW_MESSAGE" desc="Message in the sign-in error notification when there's an error signing in.">
          Chrome OS could not sync your data due to an error signing in.
        </message>
      </if>

      <if expr="is_macosx">
        <message name="IDS_OPTIONS_PASSWORDS_MAC_WARNING" desc="The warning for OS X that passwords are shared across profiles in the keychain.">
          On Mac, passwords are saved to your Keychain and may be accessed or synced by other Chrome users sharing this OS X account.
        </message>
        <message name="IDS_AUTOFILL_ADDRESS_BOOK_PROMPT_DESCRIPTION" desc="Text to show in dialog requesting permission to access the user's Address Book contents.">
          Details from your contacts can help you fill out forms more quickly in Chrome.
        </message>
      </if>

      <message name="IDS_AUTOFILL_CC_INFOBAR_TEXT" desc="Text to show in the Autofill credit card request infobar.">
        Do you want Chrome to save this credit card information for completing web forms?
      </message>
      <message name="IDS_AUTOFILL_DIALOG_SAVE_LOCALLY_CHECKBOX" desc="Checkbox that controls whether info the user types into the autofill dialog is saved by chrome.">
        Save details in Chrome
      </message>
      <message name="IDS_AUTOFILL_DIALOG_SAVE_LOCALLY_TOOLTIP" desc="Tooltip which explains function of checkbox that controls whether info the user types into the autofill dialog is saved by chrome.">
        Chrome will securely store your information so you don't need to type it in again, but you will still need to verify your card's security code for future payments.
      </message>
      <message name="IDS_AUTOFILL_NEW_CREDIT_CARD_BUBBLE_TITLE" desc="Title text of the new credit card bubble informing a user their billing information has been saved in chrome.">
        Your billing details have been saved in Chrome.
      </message>
      <message name="IDS_AUTOFILL_WALLET_UPGRADE_CHROME_ERROR" desc="Text explaining that user must upgrade Chrome to use Wallet.">
        You must upgrade Chrome to use Google Wallet [<ph name="ERROR_CODE">$1<ex>54</ex></ph>].
      </message>

      <!-- Network Error Pages -->
      <message name="IDS_ERRORPAGES_SUGGESTION_NETWORK_PREDICTION_BODY" desc="When a page fails to load, sometimes we suggest disabling predicting network actions.  These are details below a header.">
        Go to
        the Chrome menu &gt;
        <ph name="SETTINGS_TITLE">&lt;span jscontent="settingsTitle"&gt;&lt;/span&gt;<ex>Settings</ex></ph>
        &gt;
        <ph name="ADVANCED_TITLE">&lt;span jscontent="advancedTitle"&gt;&lt;/span&gt;<ex>Under the Hood</ex></ph>
        and deselect &quot;<ph name="NO_PREFETCH_DESCRIPTION">&lt;span jscontent="noNetworkPredictionTitle"&gt;&lt;/span&gt;<ex>Predict network actions to improve page load performance</ex></ph>.&quot;
        If this does not resolve the issue, we recommend selecting this option
        again for improved performance.
      </message>
      <message name="IDS_ERRORPAGES_SUGGESTION_FIREWALL_CONFIG_HEADER" desc="When a webpage fails to load, in some cases we suggest reconfiguring the firewall.  This is a header above some details.">
        Allow Chrome to access the network in your firewall or antivirus
        settings.
      </message>
      <if expr="is_macosx">
        <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Mac OSX instructions for disabling use of a proxy server.">
          Go to
          Applications &gt; System Preferences &gt; Network &gt; Advanced &gt; Proxies
          and deselect any proxies that have been selected.
        </message>
      </if>
      <if expr="is_android or is_ios">
        <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Instructions for disabling use of a proxy server (leave empty for Android and iOS).">
        </message>
      </if>
      <if expr="not chromeos and is_posix and not is_macosx and not is_android and not is_ios">
        <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Linux instructions for disabling use of a proxy server.">
          Go to
          the Chrome menu &gt;
          <ph name="SETTINGS_TITLE">&lt;span jscontent="settingsTitle"&gt;&lt;/span&gt;<ex>Settings</ex></ph>
          &gt;
          <ph name="ADVANCED_TITLE">&lt;span jscontent="advancedTitle"&gt;&lt;/span&gt;<ex>Under the Hood</ex></ph>
          &gt;
          <ph name="PROXIES_TITLE">&lt;span jscontent="proxyTitle"&gt;&lt;/span&gt;<ex>Change proxy settings...</ex></ph>
          and make sure your configuration is set to &quot;no proxy&quot; or &quot;direct.&quot;
        </message>
      </if>
      <if expr="is_win">
        <message name="IDS_ERRORPAGES_SUGGESTION_PROXY_DISABLE_PLATFORM" desc="Windows instructions for disabling use of a proxy server.">
          Go to
          the Chrome menu &gt;
          <ph name="SETTINGS_TITLE">&lt;span jscontent="settingsTitle"&gt;&lt;/span&gt;<ex>Settings</ex></ph>
          &gt;
          <ph name="ADVANCED_TITLE">&lt;span jscontent="advancedTitle"&gt;&lt;/span&gt;<ex>Under the Hood</ex></ph>
          &gt;
          <ph name="PROXIES_TITLE">&lt;span jscontent="proxyTitle"&gt;&lt;/span&gt;<ex>Change proxy settings...</ex></ph>
          &gt;
          LAN Settings
          and deselect &quot;Use a proxy server for your LAN&quot;.
        </message>
      </if>

      <!-- Chrome OS keyboard overlay-->
      <if expr="chromeos">
        <message name="IDS_KEYBOARD_OVERLAY_SHOW_WRENCH_MENU" desc="The text in the keyboard overlay to explain the shortcut that opens the main Chrome menu.">
          Show the Chrome menu
        </message>
      </if>

      <!-- App list -->
      <if expr="enable_app_list">
        <message name="IDS_APP_LIST_SHORTCUT_NAME" desc="Name for the Chrome App List to appear in the taskbar and in any shortcuts to it.">
          Chrome App Launcher
        </message>
        <if expr="is_win or is_macosx">
          <message name="IDS_APP_LIST_SHORTCUT_NAME_CANARY" desc="Name for the Chrome App List to appear in the taskbar and in any shortcuts to it for the Canary channel.">
            Chrome App Launcher Canary
          </message>
        </if>
        <message name="IDS_APP_LIST_SIGNIN_HEADING" desc="Heading for when the launcher needs to sign in.">
          Sign in to Chrome
        </message>
        <message name="IDS_APP_LIST_SIGNIN_TEXT" desc="Text for when the launcher needs to sign in.">
          You need to be signed in to Chrome to use apps. This allows Chrome to sync your apps, bookmarks, history, passwords and other settings across devices.
        </message>
      </if>

      <!-- App shortcuts -->
      <message name="IDS_APP_SHORTCUTS_SUBDIR_NAME" desc="Name for the Chrome Apps Start Menu folder name.">
        Chrome Apps
      </message>
      <message name="IDS_APP_SHORTCUTS_SUBDIR_NAME_CANARY" desc="Name for the Chrome Apps Start Menu folder name for the Canary channel.">
        Chrome Canary Apps
      </message>

      <!-- Chrome Conflicts bubble -->
      <if expr="is_win">
        <message name="IDS_OPTIONS_CONFLICTING_MODULE" desc="Shown in a bubble when a conflict has been detected.">
          Software running on your computer is incompatible with Google Chrome.
        </message>
      </if>

      <!-- Chrome OS OOBE Terms of Service screen-->
      <if expr="chromeos">
        <message name="IDS_TERMS_OF_SERVICE_SCREEN_SUBHEADING" desc="Subheading at the top of the Terms of Service screen.">
          <ph name="DOMAIN">$1<ex>example.com</ex></ph> requires that you read and accept the following Terms of Service before using this device. These terms do not expand, modify or limit the Google Chrome OS Terms.
        </message>
      </if>

      <!-- Chrome Notifications center -->
      <if expr="enable_notifications">
        <if expr="is_win">
          <message name="IDS_MESSAGE_CENTER_BALLOON_TITLE" desc="Title of the first run notification ballon describing the notification center.">
            Chrome Notification Center
          </message>
          <message name="IDS_MESSAGE_CENTER_BALLOON_TEXT" desc="Body text for the the first run notification ballon describing the notification center.">
            You can see all your notifications from Chrome apps, extensions, and websites here.
          </message>
        </if>
        <message name="IDS_MESSAGE_CENTER_TOOLTIP" desc="Tooltip for notification tray icon without unread notifications">
          Chrome - Notifications
        </message>
        <message name="IDS_MESSAGE_CENTER_TOOLTIP_UNREAD" desc="Tooltip for notification tray icon with unread notifications">
          Chrome - Notifications (<ph name="QUANTITY">$1<ex>3</ex></ph> unread)
        </message>
      </if>

      <!-- MediaStream capture status tray icon -->
      <message name="IDS_MEDIA_STREAM_STATUS_TRAY_TEXT_AUDIO_AND_VIDEO" desc="Tool tip for the capture status tray icon when microphone and camera are being used">
        Google Chrome is using your camera and microphone.
      </message>
      <message name="IDS_MEDIA_STREAM_STATUS_TRAY_TEXT_AUDIO_ONLY" desc="Tool tip for the capture status tray icon when microphone is being used">
        Google Chrome is using your microphone.
      </message>
      <message name="IDS_MEDIA_STREAM_STATUS_TRAY_TEXT_VIDEO_ONLY" desc="Tool tip for the capture status tray icon when camera is being used">
        Google Chrome is using your camera.
      </message>

      <!-- ProcessSingleton -->
      <if expr="is_linux or is_macosx">
        <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
          The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>).  Chrome has locked the profile so that it doesn't get corrupted.  If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
        </message>
      </if>

      <!-- Mac First-run dialog messages -->
      <if expr="is_macosx">
        <message name="IDS_FIRSTRUN_DLG_MAC_SET_DEFAULT_BROWSER_LABEL" desc="Label for checkbox that sets the default browser">
          Set Google Chrome as your default browser
        </message>
      </if>

      <!-- chrome://settings. Android uses native UI for settings -->
      <if expr="not is_android">
        <message name="IDS_AUTOLAUNCH_TEXT" desc="The text displayed in settings to explain whether Chromium is set to auto-launch on startup or not.">
          Launch Chromium automatically when your computer starts
        </message>
        <message name="IDS_OPTIONS_DEFAULTBROWSER_USEASDEFAULT" desc="The label of the 'Use Chrome as default' browser button">
          Make Google Chrome the default browser
        </message>
      </if>

      <!-- Toast experiment. -->
      <if expr="is_win">
        <message name="IDS_TRY_TOAST_SET_DEFAULT" desc="Text of the checkbox to make Chrome the default browser">
          Make Google Chrome the default browser
        </message>
      </if>

      <!-- User manager tutorial -->
      <if expr="not is_android and not is_ios and not chromeos">
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_INTRO_TITLE" desc="Title of the tutorial introduction slide">
          Chrome just got better
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_INTRO_TEXT" desc="Main text of the tutorial introduction slide">
          Now it's easier to use Chrome with your Google Account and on shared computers.
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_YOUR_CHROME_TITLE" desc="Title of the personalization slide">
          This is your Chrome
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_YOUR_CHROME_TEXT" desc="Main text of the personalization slide">
          Your web, bookmarks, and other Chrome stuff live here.
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_GUEST_TEXT" desc="Main text of the guest user slide">
          Guests can use Chrome without leaving anything behind.
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_FRIENDS_TEXT" desc="Main text of the friends and family slide">
          If you share a computer, friends and family can browse separately and set up Chrome just the way they want.
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_OUTRO_TEXT" desc="Main text of the tutorial completion slide">
          Click your name to open Chrome and start browsing.
        </message>
        <message name="IDS_USER_MANAGER_TUTORIAL_SLIDE_OUTRO_ADD_USER" desc="Title text for the button that would add a new user">
          Add yourself to Chrome
        </message>
      </if>

      <!-- Settings API bubble -->
      <message name="IDS_EXTENSIONS_SETTINGS_API_FIRST_LINE_START_PAGES" desc="Text displayed in the Settings API bubble as first line when an extension has changed the start pages.">
        An extension has changed what page is shown when you start Chrome.
      </message>
      <message name="IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES" desc="Second line in the Settings API bubble. Only shown if the secondary change by the extension was just the start pages. The triple single quotes are needed to preserve the space before and after the sentence which is needed when the language (Chrome is being translated to) uses space as word separator. Please preserve them, unless the language being translated to does not use space as word separator.">
        ''' It also controls what page is shown when you start Chrome. '''
      </message>
      <message name="IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_HOME" desc="Second line in the Settings API bubble. Only shown if the secondary change by the extension was both the start page and the home page. See IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES for reason for triple quotes.">
        ''' It also controls what page is shown when you start Chrome or click the Home button. '''
      </message>
      <message name="IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_AND_SEARCH" desc="Second line in the Settings API bubble. Only shown if the secondary change by the extension was both the start page and the search engine. See IDS_EXTENSIONS_SETTINGS_API_SECOND_LINE_START_PAGES for reason for triple quotes.">
        ''' It also controls what page is shown when you start Chrome or search from the Omnibox. '''
      </message>

      <!-- Windows firewall rule strings. -->
      <if expr="is_win">
        <message name="IDS_INBOUND_MDNS_RULE_NAME" desc="The name of the firewall rule allowing inbound mDNS traffic.">
          Google Chrome (mDNS-In)
        </message>
        <message name="IDS_INBOUND_MDNS_RULE_NAME_CANARY" desc="The name of the firewall rule allowing inbound mDNS traffic for canary.">
          Google Chrome Canary (mDNS-In)
        </message>
        <message name="IDS_INBOUND_MDNS_RULE_DESCRIPTION" desc="The description of the firewall rule allowing inbound mDNS traffic.">
          Inbound rule for Google Chrome to allow mDNS traffic.
        </message>
        <message name="IDS_INBOUND_MDNS_RULE_DESCRIPTION_CANARY" desc="The description of the firewall rule allowing inbound mDNS traffic canary.">
          Inbound rule for Google Chrome Canary to allow mDNS traffic.
        </message>
      </if>

      <!-- Update bubble -->
      <message name="IDS_REINSTALL_APP" desc="Text for the button the user clicks to reinstall the app.">
        Reinstall Chrome
      </message>
      <if expr="use_titlecase">
        <message name="IDS_UPGRADE_BUBBLE_MENU_ITEM" desc="In Title Case: Text for the Chrome menu option replacing Update required.">
          Chrome is Out of Date
        </message>
      </if>
      <if expr="not use_titlecase">
        <message name="IDS_UPGRADE_BUBBLE_MENU_ITEM" desc="Text for the Chrome menu option replacing Update required.">
          Chrome is out of date
        </message>
      </if>
      <message name="IDS_UPGRADE_BUBBLE_TITLE" desc="Text for the title of the upgrade bubble view.">
        Chrome is out of date
      </message>
      <message name="IDS_UPGRADE_BUBBLE_TEXT" desc="Text for the upgrade bubble view full description.">
        Chrome could not update itself to the latest version, so you are missing out on awesome new features and security fixes. You need to manually reinstall Chrome.
      </message>
      <message name="IDS_UPGRADE_BUBBLE_REENABLE_TEXT" desc="Text for the upgrade bubble view full description.">
        Chrome could not update itself to the latest version, so you are missing out on awesome new features and security fixes. You need to update Chrome.
      </message>

      <!-- Dialog that asks whether user wants to participate in Safe Browsing Extended Reporting -->
      <message name="IDS_FEEDBACK_SERVICE_DIALOG_TITLE" desc="Title of the dialog asking whether the user wants to upload suspected malicious files for analysis">
        Help make Chrome better
      </message>
      <message name="IDS_FEEDBACK_SERVICE_DIALOG_EXPLANATION" desc="Explanation of the dialog asking whether the user wants to upload suspected malicious files for analysis">
        You can help make Chrome safer and easier to use by automatically reporting details of possible security incidents to Google.
      </message>
    </messages>
  </release>
</grit>
