summaryrefslogtreecommitdiffstats
path: root/browser/components/translation/translation-infobar.xml
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/translation/translation-infobar.xml')
-rw-r--r--browser/components/translation/translation-infobar.xml441
1 files changed, 0 insertions, 441 deletions
diff --git a/browser/components/translation/translation-infobar.xml b/browser/components/translation/translation-infobar.xml
deleted file mode 100644
index db0695c03..000000000
--- a/browser/components/translation/translation-infobar.xml
+++ /dev/null
@@ -1,441 +0,0 @@
-<?xml version="1.0"?>
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<!DOCTYPE bindings [
-<!ENTITY % notificationDTD SYSTEM "chrome://global/locale/notification.dtd">
-%notificationDTD;
-<!ENTITY % translationDTD SYSTEM "chrome://browser/locale/translation.dtd" >
-%translationDTD;
-]>
-
-<bindings id="translationBindings"
- xmlns="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:xbl="http://www.mozilla.org/xbl">
- <binding id="translationbar" extends="chrome://global/content/bindings/notification.xml#notification" role="xul:alert">
- <resources>
- <stylesheet src="chrome://global/skin/notification.css"/>
- </resources>
- <content>
- <xul:hbox class="notification-inner" flex="1" xbl:inherits="type">
- <xul:hbox anonid="details" align="center" flex="1">
- <xul:image class="translate-infobar-element messageImage"
- anonid="messageImage"/>
- <xul:panel anonid="welcomePanel" class="translation-welcome-panel"
- type="arrow" align="start">
- <xul:image class="translation-welcome-logo"/>
- <xul:vbox flex="1" class="translation-welcome-content">
- <xul:description class="translation-welcome-headline"
- anonid="welcomeHeadline"/>
- <xul:description class="translation-welcome-body" anonid="welcomeBody"/>
- <xul:hbox align="center">
- <xul:label anonid="learnMore" class="plain text-link"
- onclick="openUILinkIn('https://support.mozilla.org/kb/automatic-translation', 'tab'); this.parentNode.parentNode.parentNode.hidePopup();"/>
- <xul:spacer flex="1"/>
- <xul:button class="translate-infobar-element" anonid="thanksButton"
- onclick="this.parentNode.parentNode.parentNode.hidePopup();"/>
- </xul:hbox>
- </xul:vbox>
- </xul:panel>
- <xul:deck anonid="translationStates" selectedIndex="0">
-
- <!-- offer to translate -->
- <xul:hbox class="translate-offer-box" align="center">
- <xul:label class="translate-infobar-element" value="&translation.thisPageIsIn.label;"/>
- <xul:menulist class="translate-infobar-element" anonid="detectedLanguage">
- <xul:menupopup/>
- </xul:menulist>
- <xul:label class="translate-infobar-element" value="&translation.translateThisPage.label;"/>
- <xul:button class="translate-infobar-element"
- label="&translation.translate.button;"
- anonid="translate"
- oncommand="document.getBindingParent(this).translate();"/>
- <xul:button class="translate-infobar-element"
- label="&translation.notNow.button;" anonid="notNow"
- oncommand="document.getBindingParent(this).closeCommand();"/>
- </xul:hbox>
-
- <!-- translating -->
- <xul:vbox class="translating-box" pack="center">
- <xul:label class="translate-infobar-element"
- value="&translation.translatingContent.label;"/>
- </xul:vbox>
-
- <!-- translated -->
- <xul:hbox class="translated-box" align="center">
- <xul:label class="translate-infobar-element"
- value="&translation.translatedFrom.label;"/>
- <xul:menulist class="translate-infobar-element"
- anonid="fromLanguage"
- oncommand="document.getBindingParent(this).translate()">
- <xul:menupopup/>
- </xul:menulist>
- <xul:label class="translate-infobar-element"
- value="&translation.translatedTo.label;"/>
- <xul:menulist class="translate-infobar-element"
- anonid="toLanguage"
- oncommand="document.getBindingParent(this).translate()">
- <xul:menupopup/>
- </xul:menulist>
- <xul:label class="translate-infobar-element"
- value="&translation.translatedToSuffix.label;"/>
- <xul:button anonid="showOriginal"
- class="translate-infobar-element"
- label="&translation.showOriginal.button;"
- oncommand="document.getBindingParent(this).showOriginal();"/>
- <xul:button anonid="showTranslation"
- class="translate-infobar-element"
- label="&translation.showTranslation.button;"
- oncommand="document.getBindingParent(this).showTranslation();"/>
- </xul:hbox>
-
- <!-- error -->
- <xul:hbox class="translation-error" align="center">
- <xul:label class="translate-infobar-element"
- value="&translation.errorTranslating.label;"/>
- <xul:button class="translate-infobar-element"
- label="&translation.tryAgain.button;"
- anonid="tryAgain"
- oncommand="document.getBindingParent(this).translate();"/>
- </xul:hbox>
-
- <!-- unavailable -->
- <xul:vbox class="translation-unavailable" pack="center">
- <xul:label class="translate-infobar-element"
- value="&translation.serviceUnavailable.label;"/>
- </xul:vbox>
-
- </xul:deck>
- <xul:spacer flex="1"/>
-
- <xul:button type="menu"
- class="translate-infobar-element options-menu-button"
- anonid="options"
- label="&translation.options.menu;">
- <xul:menupopup class="translation-menupopup cui-widget-panel cui-widget-panelview
- cui-widget-panelWithFooter PanelUI-subView"
- onpopupshowing="document.getBindingParent(this).optionsShowing();">
- <xul:menuitem anonid="neverForLanguage"
- oncommand="document.getBindingParent(this).neverForLanguage();"/>
- <xul:menuitem anonid="neverForSite"
- oncommand="document.getBindingParent(this).neverForSite();"
- label="&translation.options.neverForSite.label;"
- accesskey="&translation.options.neverForSite.accesskey;"/>
- <xul:menuseparator/>
- <xul:menuitem oncommand="openPreferences('paneContent');"
- label="&translation.options.preferences.label;"
- accesskey="&translation.options.preferences.accesskey;"/>
- <xul:menuitem class="subviewbutton panel-subview-footer"
- oncommand="document.getBindingParent(this).openProviderAttribution();">
- <xul:deck anonid="translationEngine" selectedIndex="0">
- <xul:hbox class="translation-attribution">
- <xul:label>&translation.options.attribution.beforeLogo;</xul:label>
- <xul:image src="chrome://browser/content/microsoft-translator-attribution.png"
- aria-label="Microsoft Translator"/>
- <xul:label>&translation.options.attribution.afterLogo;</xul:label>
- </xul:hbox>
- <xul:label class="translation-attribution">&translation.options.attribution.yandexTranslate;</xul:label>
- </xul:deck>
- </xul:menuitem>
- </xul:menupopup>
- </xul:button>
-
- </xul:hbox>
- <xul:toolbarbutton ondblclick="event.stopPropagation();"
- anonid="closeButton"
- class="messageCloseButton close-icon tabbable"
- xbl:inherits="hidden=hideclose"
- tooltiptext="&closeNotification.tooltip;"
- oncommand="document.getBindingParent(this).closeCommand();"/>
- </xul:hbox>
- </content>
- <implementation>
- <property name="state"
- onget="return this._getAnonElt('translationStates').selectedIndex;">
- <setter>
- <![CDATA[
- let deck = this._getAnonElt('translationStates');
-
- let activeElt = document.activeElement;
- if (activeElt && deck.contains(activeElt))
- activeElt.blur();
-
- let stateName;
- for (let name of ["OFFER", "TRANSLATING", "TRANSLATED", "ERROR"]) {
- if (Translation["STATE_" + name] == val) {
- stateName = name.toLowerCase();
- break;
- }
- }
- this.setAttribute("state", stateName);
-
- if (val == Translation.STATE_TRANSLATED)
- this._handleButtonHiding();
-
- deck.selectedIndex = val;
- ]]>
- </setter>
- </property>
-
- <method name="init">
- <parameter name="aTranslation"/>
- <body>
- <![CDATA[
- this.translation = aTranslation;
- let bundle = Cc["@mozilla.org/intl/stringbundle;1"]
- .getService(Ci.nsIStringBundleService)
- .createBundle("chrome://global/locale/languageNames.properties");
- let sortByLocalizedName = function(aList) {
- return aList.map(code => [code, bundle.GetStringFromName(code)])
- .sort((a, b) => a[1].localeCompare(b[1]));
- };
-
- // Fill the lists of supported source languages.
- let detectedLanguage = this._getAnonElt("detectedLanguage");
- let fromLanguage = this._getAnonElt("fromLanguage");
- let sourceLanguages =
- sortByLocalizedName(Translation.supportedSourceLanguages);
- for (let [code, name] of sourceLanguages) {
- detectedLanguage.appendItem(name, code);
- fromLanguage.appendItem(name, code);
- }
- detectedLanguage.value = this.translation.detectedLanguage;
-
- // translatedFrom is only set if we have already translated this page.
- if (aTranslation.translatedFrom)
- fromLanguage.value = aTranslation.translatedFrom;
-
- // Fill the list of supported target languages.
- let toLanguage = this._getAnonElt("toLanguage");
- let targetLanguages =
- sortByLocalizedName(Translation.supportedTargetLanguages);
- for (let [code, name] of targetLanguages)
- toLanguage.appendItem(name, code);
-
- if (aTranslation.translatedTo)
- toLanguage.value = aTranslation.translatedTo;
-
- if (aTranslation.state)
- this.state = aTranslation.state;
-
- // Show attribution for the preferred translator.
- let engineIndex = Object.keys(Translation.supportedEngines)
- .indexOf(Translation.translationEngine);
- if (engineIndex != -1) {
- this._getAnonElt('translationEngine').selectedIndex = engineIndex;
- }
-
- const kWelcomePref = "browser.translation.ui.welcomeMessageShown";
- if (Services.prefs.prefHasUserValue(kWelcomePref) ||
- this.translation.browser != gBrowser.selectedBrowser)
- return;
-
- this.addEventListener("transitionend", function onShown() {
- this.removeEventListener("transitionend", onShown);
-
- // These strings are hardcoded because they need to reach beta
- // without riding the trains.
- let localizedStrings = {
- en: ["Hey look! It's something new!",
- "Now the Web is even more accessible with our new in-page translation feature. Click the translate button to try it!",
- "Learn more.",
- "Thanks"],
- "es-AR": ["\xA1Mir\xE1! \xA1Hay algo nuevo!",
- "Ahora la web es a\xFAn m\xE1s accesible con nuestra nueva funcionalidad de traducci\xF3n integrada. \xA1Hac\xE9 clic en el bot\xF3n traducir para probarla!",
- "Conoc\xE9 m\xE1s.",
- "Gracias"],
- "es-ES": ["\xA1Mira! \xA1Hay algo nuevo!",
- "Con la nueva funcionalidad de traducci\xF3n integrada, ahora la Web es a\xFAn m\xE1s accesible. \xA1Pulsa el bot\xF3n Traducir y pru\xE9bala!",
- "M\xE1s informaci\xF3n.",
- "Gracias"],
- pl: ["Sp\xF3jrz tutaj! To co\u015B nowego!",
- "Sie\u0107 sta\u0142a si\u0119 w\u0142a\u015Bnie jeszcze bardziej dost\u0119pna dzi\u0119ki opcji bezpo\u015Bredniego t\u0142umaczenia stron. Kliknij przycisk t\u0142umaczenia, aby spr\xF3bowa\u0107!",
- "Dowiedz si\u0119 wi\u0119cej",
- "Dzi\u0119kuj\u0119"],
- tr: ["Bak\u0131n, burada yeni bir \u015Fey var!",
- "Yeni sayfa i\xE7i \xE7eviri \xF6zelli\u011Fimiz sayesinde Web art\u0131k \xE7ok daha anla\u015F\u0131l\u0131r olacak. Denemek i\xE7in \xC7evir d\xFC\u011Fmesine t\u0131klay\u0131n!",
- "Daha fazla bilgi al\u0131n.",
- "Te\u015Fekk\xFCrler"],
- vi: ["Nh\xECn n\xE0y! \u0110\u1ED3 m\u1EDBi!",
- "Gi\u1EDD \u0111\xE2y ch\xFAng ta c\xF3 th\u1EC3 ti\u1EBFp c\u1EADn web d\u1EC5 d\xE0ng h\u01A1n n\u1EEFa v\u1EDBi t\xEDnh n\u0103ng d\u1ECBch ngay trong trang. Hay nh\u1EA5n n\xFAt d\u1ECBch \u0111\u1EC3 th\u1EED!",
- "T\xECm hi\u1EC3u th\xEAm.",
- "C\u1EA3m \u01A1n"]
- };
-
- let locale = Cc["@mozilla.org/chrome/chrome-registry;1"]
- .getService(Ci.nsIXULChromeRegistry)
- .getSelectedLocale("browser");
- if (!(locale in localizedStrings))
- locale = "en";
- let strings = localizedStrings[locale];
-
- this._getAnonElt("welcomeHeadline").setAttribute("value", strings[0]);
- this._getAnonElt("welcomeBody").textContent = strings[1];
- this._getAnonElt("learnMore").setAttribute("value", strings[2]);
- this._getAnonElt("thanksButton").setAttribute("label", strings[3]);
-
- let panel = this._getAnonElt("welcomePanel");
- panel.openPopup(this._getAnonElt("messageImage"),
- "bottomcenter topleft");
-
- Services.prefs.setBoolPref(kWelcomePref, true);
- });
- ]]>
- </body>
- </method>
-
- <method name="_getAnonElt">
- <parameter name="aAnonId"/>
- <body>
- return document.getAnonymousElementByAttribute(this, "anonid", aAnonId);
- </body>
- </method>
-
- <method name="translate">
- <body>
- <![CDATA[
- if (this.state == Translation.STATE_OFFER) {
- this._getAnonElt("fromLanguage").value =
- this._getAnonElt("detectedLanguage").value;
- this._getAnonElt("toLanguage").value =
- Translation.defaultTargetLanguage;
- }
-
- this.translation.translate(this._getAnonElt("fromLanguage").value,
- this._getAnonElt("toLanguage").value);
- ]]>
- </body>
- </method>
-
- <!-- To be called when the infobar should be closed per user's wish (e.g.
- by clicking the notification's close button -->
- <method name="closeCommand">
- <body>
- <![CDATA[
- this.close();
- this.translation.infobarClosed();
- ]]>
- </body>
- </method>
- <method name="_handleButtonHiding">
- <body>
- <![CDATA[
- let originalShown = this.translation.originalShown;
- this._getAnonElt("showOriginal").hidden = originalShown;
- this._getAnonElt("showTranslation").hidden = !originalShown;
- ]]>
- </body>
- </method>
-
- <method name="showOriginal">
- <body>
- <![CDATA[
- this.translation.showOriginalContent();
- this._handleButtonHiding();
- ]]>
- </body>
- </method>
-
- <method name="showTranslation">
- <body>
- <![CDATA[
- this.translation.showTranslatedContent();
- this._handleButtonHiding();
- ]]>
- </body>
- </method>
-
- <method name="optionsShowing">
- <body>
- <![CDATA[
- // Get the source language name.
- let lang;
- if (this.state == Translation.STATE_OFFER)
- lang = this._getAnonElt("detectedLanguage").value;
- else {
- lang = this._getAnonElt("fromLanguage").value;
-
- // If we have never attempted to translate the page before the
- // service became unavailable, "fromLanguage" isn't set.
- if (!lang && this.state == Translation.STATE_UNAVAILABLE)
- lang = this.translation.detectedLanguage;
- }
-
- let langBundle =
- Cc["@mozilla.org/intl/stringbundle;1"]
- .getService(Ci.nsIStringBundleService)
- .createBundle("chrome://global/locale/languageNames.properties");
- let langName = langBundle.GetStringFromName(lang);
-
- // Set the label and accesskey on the menuitem.
- let bundle =
- Cc["@mozilla.org/intl/stringbundle;1"]
- .getService(Ci.nsIStringBundleService)
- .createBundle("chrome://browser/locale/translation.properties");
- let item = this._getAnonElt("neverForLanguage");
- const kStrId = "translation.options.neverForLanguage";
- item.setAttribute("label",
- bundle.formatStringFromName(kStrId + ".label",
- [langName], 1));
- item.setAttribute("accesskey",
- bundle.GetStringFromName(kStrId + ".accesskey"));
- item.langCode = lang;
-
- // We may need to disable the menuitems if they have already been used.
- // Check if translation is already disabled for this language:
- let neverForLangs =
- Services.prefs.getCharPref("browser.translation.neverForLanguages");
- item.disabled = neverForLangs.split(",").indexOf(lang) != -1;
-
- // Check if translation is disabled for the domain:
- let uri = this.translation.browser.currentURI;
- let perms = Services.perms;
- item = this._getAnonElt("neverForSite");
- item.disabled =
- perms.testExactPermission(uri, "translate") == perms.DENY_ACTION;
- ]]>
- </body>
- </method>
-
- <method name="neverForLanguage">
- <body>
- <![CDATA[
- const kPrefName = "browser.translation.neverForLanguages";
-
- let val = Services.prefs.getCharPref(kPrefName);
- if (val)
- val += ",";
- val += this._getAnonElt("neverForLanguage").langCode;
-
- Services.prefs.setCharPref(kPrefName, val);
-
- this.closeCommand();
- ]]>
- </body>
- </method>
-
- <method name="neverForSite">
- <body>
- <![CDATA[
- let uri = this.translation.browser.currentURI;
- let perms = Services.perms;
- perms.add(uri, "translate", perms.DENY_ACTION);
-
- this.closeCommand();
- ]]>
- </body>
- </method>
-
- <method name="openProviderAttribution">
- <body>
- <![CDATA[
- Translation.openProviderAttribution();
- ]]>
- </body>
- </method>
-
- </implementation>
- </binding>
-</bindings>