<?xml version="1.0" encoding="utf-8"?>
<grit-part>

   <!-- Translate Info Bar -->
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS" desc="Text to show for the translate infobar options menu button">
    Options
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG" desc="Text for the menu item to never translate the specified language">
    Never translate <ph name="language">$1<ex>French</ex></ph>
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE" desc="Text for the menu item to never translate the current site">
    Never translate this site
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS" desc="Text for the menu item to always translate from one language to another">
    Always translate <ph name="original_language">$1<ex>French</ex></ph> to <ph name="target_language">$2<ex>German</ex></ph>
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS_REPORT_ERROR" desc="Text for the menu item for reporting the page's language was not correctly detected">
    Not in <ph name="original_language">$1<ex>French</ex></ph>? Report this error
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT" desc="Text for the menu item for information about Google Translate">
    About Google Translate
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE" desc="Message that page is in specified language and ask if should translate">
    This page is in<ph name="original_language">$1<ex>French</ex></ph>Would you like to translate it?
  </message>
  <if expr="is_ios">
    <message name="IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_IOS" desc="Text to display on the translate infobar to offer a translate. [Length: 200em] [iOS only]">
      This page is in <ph name="SOURCE_LANGUAGE">$1<ex>English</ex></ph>. Translate it to <ph name="TARGET_LANGUAGE">$2<ex>French</ex></ph>?
    </message>
  </if>
  <if expr="is_android">
    <message name="IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_MOBILE" desc="Mobile: Message that page is in specified language and ask if should translate.">
      Translate from <ph name="original_language">$1<ex>French</ex></ph> to <ph name="target_language">$2<ex>English</ex></ph>?
    </message>
  </if>
  <message name="IDS_TRANSLATE_INFOBAR_ACCEPT" desc="Text to show for the translate infobar button to accept translation.">
    Translate
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_DENY" desc="Text to show for the translate infobar button to deny translation.">
    Nope
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_NEVER_TRANSLATE" desc="Button label shown to never translate a specific language in the translate infobar">
    Never translate <ph name="language">$1<ex>French</ex></ph>
  </message>
  <if expr="is_ios">
    <message name="IDS_TRANSLATE_INFOBAR_NEVER_MESSAGE_IOS" desc="Message for the Translate infobar to allow the user to opt out. [Length: 250em] [iOS only]">
      Would you like <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> to offer to translate <ph name="LANGUAGE_NAME">$2<ex>French</ex></ph> pages from this site next time?
    </message>
  </if>
  <message name="IDS_TRANSLATE_INFOBAR_ALWAYS_TRANSLATE" desc="Button label shown to always translate a specific language in the translate infobar">
    Always translate <ph name="language">$1<ex>English</ex></ph>
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_TRANSLATING_TO" desc="Text shown when page is currently being translated by servers">
    Translating page to <ph name="language">$1<ex>English</ex></ph>...
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE" desc="Message that page has been translated from one language to another">
    This page has been translated from<ph name="original_language">$1<ex>French</ex></ph>to<ph name="language_language">$2<ex>German</ex></ph>
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE_AUTODETERMINED_SOURCE_LANGUAGE" desc="Message that page has been translated to another with server side auto language detection">
    This page has been translated to <ph name="target_language">$1<ex>German</ex></ph>
  </message>
  <if expr="is_android">
  <message name="IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE_MOBILE" desc="Mobile: Message that page has been translated from one language to another">
    This page has been translated to <ph name="target_language">$1<ex>German</ex></ph>
  </message>
  </if>
  <message name="IDS_TRANSLATE_INFOBAR_REVERT" desc="Text to show for translate infobar to revert translation of translated page">
    Show original
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_RETRY" desc="Text to show for translate infobar to retry translation of page">
    Try again
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT" desc="Error message to show for translate infobar when unable to connec to translate server">
    The translation failed because of a problem with the network connection.
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE" desc="Error message to show for translate infobar when translate server is unable to translate page">
    The translation failed because of a server error.
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_UNKNOWN_PAGE_LANGUAGE" desc="Error message to show for translate infobar when the page language could not be determined.">
    The translation failed because the page's language could not be determined.
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_ERROR_SAME_LANGUAGE" desc="Error message to show for translate infobar when the original and target languages are identical">
    The translation failed because the page is already in <ph name="language">$1<ex>English</ex></ph>.
  </message>
  <message name="IDS_TRANSLATE_INFOBAR_UNSUPPORTED_PAGE_LANGUAGE" desc="Error message shown when the translate server translated the page and returned the page was in a language the browser does not know.">
    This page has been translated from an unknown language to <ph name="language_language">$1<ex>English</ex></ph>
  </message>
  <if expr="is_android">
  <message name="IDS_TRANSLATE_INFOBAR_ERROR_MOBILE" desc="Mobile: Translate Error message">
    The translation to <ph name="target_language">$1<ex>German</ex></ph> failed.
  </message>
  </if>

</grit-part>
