diff options
Diffstat (limited to 'browser/components/translation/translation-infobar.xml')
-rw-r--r-- | browser/components/translation/translation-infobar.xml | 441 |
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> |