Merge mozilla-central to inbound. a=merge CLOSED TREE

This commit is contained in:
Margareta Eliza Balazs 2018-07-13 11:59:44 +03:00
Родитель 30d35fa996 448f792f96
Коммит 494d8952b9
236 изменённых файлов: 1787 добавлений и 1646 удалений

Просмотреть файл

@ -1355,10 +1355,11 @@ void
Accessible::Value(nsString& aValue) const
{
const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
if (!roleMapEntry)
return;
if (roleMapEntry->valueRule != eNoValue) {
if ((roleMapEntry && roleMapEntry->valueRule != eNoValue) ||
// Bug 1475376: aria-valuetext should also be supported for implicit ARIA
// roles; e.g. <input type="range">.
HasNumericValue()) {
// aria-valuenow is a number, and aria-valuetext is the optional text
// equivalent. For the string value, we will try the optional text
// equivalent first.
@ -1374,6 +1375,10 @@ Accessible::Value(nsString& aValue) const
return;
}
if (!roleMapEntry) {
return;
}
// Value of textbox is a textified subtree.
if (roleMapEntry->Is(nsGkAtoms::textbox)) {
nsTextEquivUtils::GetTextEquivFromSubtree(this, aValue);

Просмотреть файл

@ -26,6 +26,7 @@
testValue("pr_one", "100%", 1, 0, 1, 0);
testValue("pr_42", "100%", 42, 0, 1, 0);
testValue("pr_21", "50%", 21, 0, 42, 0);
testValue("pr_valuetext", "value", 0, 0, 1, 0);
SimpleTest.finish();
}
@ -56,5 +57,7 @@
<progress id="pr_one" value="1">this will be read by legacy browsers</progress>
<progress id="pr_42" value="42">this will be read by legacy browsers</progress>
<progress id="pr_21" value="21" max="42">this will be read by legacy browsers</progress>
<!-- aria-valuetext should work due to implicit progressbar role (bug 1475376) -->
<progress id="pr_valuetext" aria-valuetext="value">this will be read by legacy browsers</progress>
</body>
</html>

Просмотреть файл

@ -25,6 +25,7 @@
testValue("range_step", "50", 50, 0, 100, 1);
testValue("range_min42", "71", 71, 42, 100, 1);
testValue("range_max42", "21", 21, 0, 42, 1);
testValue("range_valuetext", "value", 50, 0, 100, 1);
SimpleTest.finish();
}
@ -54,5 +55,7 @@
<input type="range" id="range_step" step="1">
<input type="range" id="range_min42" min="42">
<input type="range" id="range_max42" max="42">
<!-- aria-valuetext should work due to implicit slider role (bug 1475376) -->
<input type="range" id="range_valuetext" aria-valuetext="value">
</body>
</html>

Просмотреть файл

@ -75,9 +75,7 @@ pref("extensions.webextensions.default-content-security-policy", "script-src 'se
pref("extensions.webextensions.remote", true);
#endif
#ifdef NIGHTLY_BUILD
pref("extensions.webextensions.background-delayed-startup", true);
#endif
// Extensions that should not be flagged as legacy in about:addons
pref("extensions.legacy.exceptions", "testpilot@cliqz.com,@testpilot-containers,jid1-NeEaf3sAHdKHPA@jetpack,@activity-streams,pulse@mozilla.com,@testpilot-addon,@min-vid,tabcentertest1@mozilla.com,snoozetabs@mozilla.com,speaktome@mozilla.com,hoverpad@mozilla.com");

Просмотреть файл

@ -446,15 +446,12 @@ var PlacesCommandHook = {
/**
* Adds a bookmark to the page targeted by a link.
* @param parentId
* The folder in which to create a new bookmark if aURL isn't
* bookmarked.
* @param url (string)
* the address of the link target
* @param title
* The link text
*/
async bookmarkLink(parentId, url, title) {
async bookmarkLink(url, title) {
let bm = await PlacesUtils.bookmarks.fetch({url});
if (bm) {
let node = await PlacesUIUtils.promiseNodeLikeFromFetchInfo(bm);
@ -462,10 +459,10 @@ var PlacesCommandHook = {
return;
}
let parentGuid = parentId == PlacesUtils.bookmarksMenuFolderId ?
PlacesUtils.bookmarks.menuGuid :
await PlacesUtils.promiseItemGuid(parentId);
let defaultInsertionPoint = new PlacesInsertionPoint({ parentId, parentGuid });
let defaultInsertionPoint = new PlacesInsertionPoint({
parentId: PlacesUtils.bookmarksMenuFolderId,
parentGuid: PlacesUtils.bookmarks.menuGuid
});
PlacesUIUtils.showBookmarkDialog({ action: "add",
type: "bookmark",
uri: makeURI(url),

Просмотреть файл

@ -1437,8 +1437,8 @@ nsContextMenu.prototype = {
},
bookmarkLink: function CM_bookmarkLink() {
window.top.PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId,
this.linkURL, this.linkTextStr);
window.top.PlacesCommandHook.bookmarkLink(this.linkURL, this.linkTextStr)
.catch(Cu.reportError);
},
addBookmarkForFrame: function CM_addBookmarkForFrame() {
@ -1448,9 +1448,7 @@ nsContextMenu.prototype = {
let onMessage = (message) => {
mm.removeMessageListener("ContextMenu:BookmarkFrame:Result", onMessage);
window.top.PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId,
uri.spec,
message.data.title)
window.top.PlacesCommandHook.bookmarkLink(uri.spec, message.data.title)
.catch(Cu.reportError);
};
mm.addMessageListener("ContextMenu:BookmarkFrame:Result", onMessage);

Просмотреть файл

@ -14,7 +14,7 @@ Debugging/Development
=====================
Must Have Electrolysis
-------
----------------------
Web Payments `does not work without e10s <https://bugzilla.mozilla.org/show_bug.cgi?id=1365964>`_!
@ -69,3 +69,19 @@ Instead, all communication across the privileged/unprivileged boundary is done v
These events are converted to/from message manager messages of the same name to communicate to the other process.
The purpose of `paymentDialogFrameScript.js` is to simply convert unprivileged DOM events to/from messages from the other process.
Custom Elements
---------------
The Payment Request UI uses Custom Elements for the UI components.
Some guidelines:
* If you're overriding a lifecycle callback, don't forget to call that method on
``super`` from the implementation to ensure that mixins and ancestor classes
work properly.
* From within a custom element, don't use ``document.getElementById`` or
``document.querySelector*`` because they can return elements that are outside
of the component, thus breaking the modularization. It can also cause problems
if the elements you're looking for aren't attached to the document yet. Use
``querySelector*`` on ``this`` (the custom element) or one of its descendants
instead.

Просмотреть файл

@ -5,33 +5,68 @@
"use strict";
/**
* <currency-amount value="7.5" currency="USD"></currency-amount>
* <currency-amount value="7.5" currency="USD" display-code></currency-amount>
*/
import ObservedPropertiesMixin from "../mixins/ObservedPropertiesMixin.js";
export default class CurrencyAmount extends ObservedPropertiesMixin(HTMLElement) {
static get observedAttributes() {
return ["currency", "value"];
return [
"currency",
"display-code",
"value",
];
}
constructor() {
super();
this._currencyAmountTextNode = document.createTextNode("");
this._currencyCodeElement = document.createElement("span");
this._currencyCodeElement.classList.add("currency-code");
}
connectedCallback() {
if (super.connectedCallback) {
super.connectedCallback();
}
this.append(this._currencyAmountTextNode, this._currencyCodeElement);
}
render() {
let output = "";
let currencyAmount = "";
let currencyCode = "";
try {
if (this.value && this.currency) {
let number = Number.parseFloat(this.value);
if (Number.isNaN(number) || !Number.isFinite(number)) {
throw new RangeError("currency-amount value must be a finite number");
}
const formatter = new Intl.NumberFormat(navigator.languages, {
const symbolFormatter = new Intl.NumberFormat(navigator.languages, {
style: "currency",
currency: this.currency,
currencyDisplay: "symbol",
});
output = formatter.format(this.value);
currencyAmount = symbolFormatter.format(this.value);
if (this.displayCode !== null) {
// XXX: Bug 1473772 will move the separator to a Fluent string.
currencyAmount += " ";
const codeFormatter = new Intl.NumberFormat(navigator.languages, {
style: "currency",
currency: this.currency,
currencyDisplay: "code",
});
let parts = codeFormatter.formatToParts(this.value);
let currencyPart = parts.find(part => part.type == "currency");
currencyCode = currencyPart.value;
}
}
} finally {
this.textContent = output;
this._currencyAmountTextNode.textContent = currencyAmount;
this._currencyCodeElement.textContent = currencyCode;
}
}
}

Просмотреть файл

@ -0,0 +1,33 @@
/* 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/. */
/**
* <payment-request-page></payment-request-page>
*/
export default class PaymentRequestPage extends HTMLElement {
constructor() {
super();
this.classList.add("page");
this.pageTitleHeading = document.createElement("h2");
// The body and footer may be pre-defined in the template so re-use them if they exist.
this.body = this.querySelector(":scope > .page-body") || document.createElement("div");
this.body.classList.add("page-body");
this.footer = this.querySelector(":scope > footer") || document.createElement("footer");
}
connectedCallback() {
// The heading goes inside the body so it scrolls.
this.body.prepend(this.pageTitleHeading);
this.appendChild(this.body);
this.appendChild(this.footer);
}
}
customElements.define("payment-request-page", PaymentRequestPage);

Просмотреть файл

@ -73,3 +73,14 @@ body[dir=rtl] .error-text::before {
:-moz-any(input, textarea, select):valid + .error-text {
display: none;
}
address-form > footer > .cancel-button {
/* When cancel is shown (during onboarding), it should always be on the left with a space after it */
margin-right: auto;
}
address-form > footer > .back-button {
/* When back is shown (outside onboarding) we want "Back <space> Add/Save" */
/* Bug 1468153 may change the button ordering to match platform conventions */
margin-right: auto;
}

Просмотреть файл

@ -4,6 +4,7 @@
/* import-globals-from ../../../../../browser/extensions/formautofill/content/autofillEditForms.js*/
import LabelledCheckbox from "../components/labelled-checkbox.js";
import PaymentRequestPage from "../components/payment-request-page.js";
import PaymentStateSubscriberMixin from "../mixins/PaymentStateSubscriberMixin.js";
import paymentRequest from "../paymentRequest.js";
/* import-globals-from ../unprivileged-fallbacks.js */
@ -11,15 +12,18 @@ import paymentRequest from "../paymentRequest.js";
/**
* <address-form></address-form>
*
* Don't use document.getElementById or document.querySelector* to access form
* elements, use querySelector on `this` or `this.form` instead so that elements
* can be found before the element is connected.
*
* XXX: Bug 1446164 - This form isn't localized when used via this custom element
* as it will be much easier to share the logic once we switch to Fluent.
*/
export default class AddressForm extends PaymentStateSubscriberMixin(HTMLElement) {
export default class AddressForm extends PaymentStateSubscriberMixin(PaymentRequestPage) {
constructor() {
super();
this.pageTitle = document.createElement("h2");
this.genericErrorText = document.createElement("div");
this.cancelButton = document.createElement("button");
@ -73,8 +77,7 @@ export default class AddressForm extends PaymentStateSubscriberMixin(HTMLElement
connectedCallback() {
this.promiseReady.then(form => {
this.appendChild(this.pageTitle);
this.appendChild(form);
this.body.appendChild(form);
let record = {};
this.formHandler = new EditAddress({
@ -85,11 +88,12 @@ export default class AddressForm extends PaymentStateSubscriberMixin(HTMLElement
supportedCountries: PaymentDialogUtils.supportedCountries,
});
this.appendChild(this.persistCheckbox);
this.appendChild(this.genericErrorText);
this.appendChild(this.cancelButton);
this.appendChild(this.backButton);
this.appendChild(this.saveButton);
this.body.appendChild(this.persistCheckbox);
this.body.appendChild(this.genericErrorText);
this.footer.appendChild(this.cancelButton);
this.footer.appendChild(this.backButton);
this.footer.appendChild(this.saveButton);
// Only call the connected super callback(s) once our markup is fully
// connected, including the shared form fetched asynchronously.
super.connectedCallback();
@ -123,7 +127,7 @@ export default class AddressForm extends PaymentStateSubscriberMixin(HTMLElement
this.removeAttribute("address-fields");
}
this.pageTitle.textContent = addressPage.title;
this.pageTitleHeading.textContent = addressPage.title;
this.genericErrorText.textContent = page.error;
let editing = !!addressPage.guid;
@ -161,8 +165,8 @@ export default class AddressForm extends PaymentStateSubscriberMixin(HTMLElement
let shippingAddressErrors = request.paymentDetails.shippingAddressErrors;
for (let [errorName, errorSelector] of Object.entries(this._errorFieldMap)) {
let container = document.querySelector(errorSelector + "-container");
let field = document.querySelector(errorSelector);
let container = this.form.querySelector(errorSelector + "-container");
let field = this.form.querySelector(errorSelector);
let errorText = (shippingAddressErrors && shippingAddressErrors[errorName]) || "";
container.classList.toggle("error", !!errorText);
field.setCustomValidity(errorText);

Просмотреть файл

@ -0,0 +1,14 @@
/* 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/. */
basic-card-form > footer > .cancel-button {
/* When cancel is shown (during onboarding), it should always be on the left with a space after it */
margin-right: auto;
}
basic-card-form > footer > .cancel-button[hidden] ~ .back-button {
/* When back is shown (outside onboarding) we want "Back <space> Add/Save" */
/* Bug 1468153 may change the button ordering to match platform conventions */
margin-right: auto;
}

Просмотреть файл

@ -4,6 +4,7 @@
/* import-globals-from ../../../../../browser/extensions/formautofill/content/autofillEditForms.js*/
import LabelledCheckbox from "../components/labelled-checkbox.js";
import PaymentRequestPage from "../components/payment-request-page.js";
import PaymentStateSubscriberMixin from "../mixins/PaymentStateSubscriberMixin.js";
import paymentRequest from "../paymentRequest.js";
@ -16,17 +17,12 @@ import paymentRequest from "../paymentRequest.js";
* as it will be much easier to share the logic once we switch to Fluent.
*/
export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLElement) {
export default class BasicCardForm extends PaymentStateSubscriberMixin(PaymentRequestPage) {
constructor() {
super();
this.pageTitle = document.createElement("h2");
this.genericErrorText = document.createElement("div");
this.cancelButton = document.createElement("button");
this.cancelButton.className = "cancel-button";
this.cancelButton.addEventListener("click", this);
this.addressAddLink = document.createElement("a");
this.addressAddLink.className = "add-link";
this.addressAddLink.href = "javascript:void(0)";
@ -36,6 +32,14 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
this.addressEditLink.href = "javascript:void(0)";
this.addressEditLink.addEventListener("click", this);
this.persistCheckbox = new LabelledCheckbox();
this.persistCheckbox.className = "persist-checkbox";
// page footer
this.cancelButton = document.createElement("button");
this.cancelButton.className = "cancel-button";
this.cancelButton.addEventListener("click", this);
this.backButton = document.createElement("button");
this.backButton.className = "back-button";
this.backButton.addEventListener("click", this);
@ -44,8 +48,7 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
this.saveButton.className = "save-button primary";
this.saveButton.addEventListener("click", this);
this.persistCheckbox = new LabelledCheckbox();
this.persistCheckbox.className = "persist-checkbox";
this.footer.append(this.cancelButton, this.backButton, this.saveButton);
// The markup is shared with form autofill preferences.
let url = "formautofill/editCreditCard.xhtml";
@ -70,8 +73,7 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
connectedCallback() {
this.promiseReady.then(form => {
this.appendChild(this.pageTitle);
this.appendChild(form);
this.body.appendChild(form);
let record = {};
let addresses = [];
@ -89,11 +91,8 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
let billingAddressRow = this.form.querySelector(".billingAddressRow");
billingAddressRow.appendChild(fragment);
this.appendChild(this.persistCheckbox);
this.appendChild(this.genericErrorText);
this.appendChild(this.cancelButton);
this.appendChild(this.backButton);
this.appendChild(this.saveButton);
this.body.appendChild(this.persistCheckbox);
this.body.appendChild(this.genericErrorText);
// Only call the connected super callback(s) once our markup is fully
// connected, including the shared form fetched asynchronously.
super.connectedCallback();
@ -135,7 +134,7 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
// If a card is selected we want to edit it.
if (editing) {
this.pageTitle.textContent = this.dataset.editBasicCardTitle;
this.pageTitleHeading.textContent = this.dataset.editBasicCardTitle;
record = basicCards[basicCardPage.guid];
if (!record) {
throw new Error("Trying to edit a non-existing card: " + basicCardPage.guid);
@ -143,7 +142,7 @@ export default class BasicCardForm extends PaymentStateSubscriberMixin(HTMLEleme
// When editing an existing record, prevent changes to persistence
this.persistCheckbox.hidden = true;
} else {
this.pageTitle.textContent = this.dataset.addBasicCardTitle;
this.pageTitleHeading.textContent = this.dataset.addBasicCardTitle;
// Use a currently selected shipping address as the default billing address
record.billingAddressGUID = basicCardPage.billingAddressGUID;
if (!record.billingAddressGUID && selectedShippingAddress) {

Просмотреть файл

@ -8,6 +8,7 @@ import PaymentStateSubscriberMixin from "../mixins/PaymentStateSubscriberMixin.j
import paymentRequest from "../paymentRequest.js";
import "../components/currency-amount.js";
import "../components/payment-request-page.js";
import "./address-picker.js";
import "./address-form.js";
import "./basic-card-form.js";

Просмотреть файл

@ -3,9 +3,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
html {
/* Based on global.css styles for top-level XUL windows */
-moz-appearance: dialog;
background-color: -moz-Dialog;
color: -moz-DialogText;
font: message-box;
/* Make sure the background ends to the bottom if there is unused space */

Просмотреть файл

@ -42,6 +42,7 @@ let REQUEST_1 = {
},
},
],
shippingAddressErrors: {},
shippingOptions: [
{
id: "123",
@ -107,6 +108,7 @@ let REQUEST_2 = {
},
},
],
shippingAddressErrors: {},
shippingOptions: [
{
id: "123",

Просмотреть файл

@ -40,6 +40,7 @@ export let requestStore = new PaymentsStore({
id: null,
totalItem: {label: null, amount: {currency: null, value: 0}},
displayItems: [],
shippingAddressErrors: {},
shippingOptions: [],
modifiers: null,
error: "",

Просмотреть файл

@ -3,28 +3,14 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
html {
/* Based on global.css styles for top-level XUL windows */
color: -moz-DialogText;
font: message-box;
height: 100%;
}
body {
/* Override font-size from in-content/common.css which is too large */
font-size: inherit;
}
#order-details-overlay,
html {
/* Based on global.css styles for top-level XUL windows */
-moz-appearance: dialog;
background-color: -moz-Dialog;
}
body {
height: 100%;
margin: 0;
overflow: hidden;
/* Override font-size from in-content/common.css which is too large */
font-size: inherit;
}
[hidden] {
@ -35,8 +21,7 @@ body {
/* include the default borders in the max-height */
box-sizing: border-box;
float: right;
/* avoid causing the body to scroll */
max-height: 100vh;
height: 100vh;
/* Float above the other overlays */
position: relative;
z-index: 99;
@ -45,26 +30,60 @@ body {
payment-dialog {
box-sizing: border-box;
display: grid;
grid-template-rows: fit-content(10%) auto;
grid-template: "header" auto
"main" 1fr
"disabled-overlay" auto;
height: 100%;
margin: 0 10%;
padding: 1em;
}
payment-dialog > header,
.page > .page-body,
.page > footer {
padding: 0 10%;
}
payment-dialog > header {
border-bottom: 1px solid rgba(0,0,0,0.1);
display: flex;
/* from visual spec: */
padding-bottom: 19px;
padding-top: 19px;
}
#main-container {
display: flex;
grid-area: main;
position: relative;
max-height: 100%;
}
#payment-summary {
display: grid;
flex: 1 1 auto;
grid-template-rows: fit-content(10%) auto fit-content(10%);
.page {
display: flex;
flex-direction: column;
height: 100%;
position: relative;
width: 100%;
}
.page > .page-body {
display: flex;
flex-direction: column;
flex-grow: 1;
/* The area above the footer should scroll, if necessary. */
overflow: auto;
}
.page > .page-body > h2:empty {
display: none;
}
.page > footer {
align-items: center;
background-color: #eaeaee;
display: flex;
/* from visual spec: */
padding-top: 20px;
padding-bottom: 18px;
}
#error-text {
@ -72,6 +91,7 @@ payment-dialog > header {
}
#order-details-overlay {
background-color: var(--in-content-page-background);
overflow: auto;
position: absolute;
top: 0;
@ -81,22 +101,37 @@ payment-dialog > header {
z-index: 1;
}
payment-dialog > footer {
align-items: baseline;
display: flex;
}
#total {
flex: 1 1 auto;
margin: 5px;
}
#total > currency-amount {
color: var(--in-content-link-color);
font-size: 1.5em;
}
#total > currency-amount > .currency-code {
color: GrayText;
font-size: 1rem;
}
#total > div {
color: GrayText;
}
#view-all {
flex: 0 1 auto;
}
#total .label {
font-size: 15px;
font-weight: bold;
payment-dialog #pay::before {
-moz-context-properties: fill;
content: url(chrome://browser/skin/connection-secure.svg);
fill: currentColor;
height: 16px;
margin-right: 0.5em;
vertical-align: text-bottom;
width: 16px;
}
payment-dialog[changes-prevented][completion-state="fail"] #pay,
@ -108,8 +143,13 @@ payment-dialog[changes-prevented][completion-state="success"] #pay {
z-index: 1;
}
#cancel {
margin-left: auto;
}
#disabled-overlay {
background: white;
grid-area: disabled-overlay;
opacity: 0.6;
width: 100%;
height: 100%;

Просмотреть файл

@ -10,6 +10,8 @@
<!ENTITY viewAllItems "View All Items">
<!ENTITY paymentSummaryTitle "Your Payment">
<!ENTITY header.payTo "Pay to">
<!ENTITY shippingAddressLabel "Shipping Address">
<!ENTITY deliveryAddressLabel "Delivery Address">
<!ENTITY pickupAddressLabel "Pickup Address">
@ -69,6 +71,7 @@
<link rel="stylesheet" href="components/shipping-option.css"/>
<link rel="stylesheet" href="components/payment-details-item.css"/>
<link rel="stylesheet" href="containers/address-form.css"/>
<link rel="stylesheet" href="containers/basic-card-form.css"/>
<link rel="stylesheet" href="containers/order-details.css"/>
<script src="unprivileged-fallbacks.js"></script>
@ -81,20 +84,17 @@
<template id="payment-dialog-template">
<header>
<div id="total">
<h2 class="label"></h2>
<currency-amount></currency-amount>
<div id="host-name"></div>
<currency-amount display-code="display-code"></currency-amount>
<div>&header.payTo; <span id="host-name"></span></div>
</div>
<div id="top-buttons" >
<div id="top-buttons" hidden="hidden">
<button id="view-all" class="closed">&viewAllItems;</button>
</div>
</header>
<div id="main-container">
<section id="payment-summary" class="page">
<h2>&paymentSummaryTitle;</h2>
<section>
<payment-request-page id="payment-summary">
<div class="page-body">
<div id="error-text"></div>
<div class="shipping-related"
@ -123,9 +123,9 @@
data-edit-link-label="&payer.editLink.label;"
selected-state-key="selectedPayerAddress"></address-picker>
<div id="error-text"></div>
</section>
</div>
<footer id="controls-container">
<footer>
<button id="cancel">&cancelPaymentButton.label;</button>
<button id="pay"
class="primary"
@ -135,14 +135,13 @@
data-unknown-label="&unknownPaymentButton.label;"
data-success-label="&successPaymentButton.label;"></button>
</footer>
</section>
</payment-request-page>
<section id="order-details-overlay" hidden="hidden">
<h2>&orderDetailsLabel;</h2>
<order-details></order-details>
</section>
<basic-card-form id="basic-card-page"
class="page"
data-add-basic-card-title="&basicCard.addPage.title;"
data-edit-basic-card-title="&basicCard.editPage.title;"
data-error-generic-save="&basicCardPage.error.genericSave;"
@ -157,7 +156,6 @@
hidden="hidden"></basic-card-form>
<address-form id="address-page"
class="page"
data-error-generic-save="&addressPage.error.genericSave;"
data-cancel-button-label="&addressPage.cancelButton.label;"
data-back-button-label="&addressPage.backButton.label;"
@ -183,8 +181,8 @@
</head>
<body dir="&locale.dir;">
<iframe id="debugging-console"
hidden="hidden"
height="400"></iframe>
hidden="hidden">
</iframe>
<payment-dialog data-shipping-address-title-add="&shippingAddress.addPage.title;"
data-shipping-address-title-edit="&shippingAddress.editPage.title;"
data-delivery-address-title-add="&deliveryAddress.addPage.title;"

Просмотреть файл

@ -69,7 +69,7 @@ add_task(async function test_change_shipping() {
// Note: The update includes a modifier, and modifiers must include a total
// so the expected total is that one
is(content.document.querySelector("#total > currency-amount").textContent,
"\u20AC2.50",
"\u20AC2.50 EUR",
"Check updated total currency amount");
let btn = content.document.querySelector("#view-all");

Просмотреть файл

@ -3,7 +3,7 @@
add_task(async function test_total() {
const testTask = ({methodData, details}) => {
is(content.document.querySelector("#total > currency-amount").textContent,
"$60.00",
"$60.00 USD",
"Check total currency amount");
};
const args = {
@ -17,7 +17,7 @@ add_task(async function test_modifier_with_no_method_selected() {
const testTask = async ({methodData, details}) => {
// There are no payment methods installed/setup so we expect the original (unmodified) total.
is(content.document.querySelector("#total > currency-amount").textContent,
"$2.00",
"$2.00 USD",
"Check unmodified total currency amount");
};
const args = {
@ -34,7 +34,7 @@ add_task(async function test_modifier_with_no_method_selected() {
const testTask = async ({methodData, details}) => {
// We expect the *only* payment method (the one basic-card) to be selected initially.
is(content.document.querySelector("#total > currency-amount").textContent,
"$2.50",
"$2.50 USD",
"Check modified total currency amount");
};
const args = {

Просмотреть файл

@ -94,7 +94,7 @@ add_task(async function test_backButton() {
await asyncElementRendered();
let stateChangePromise = promiseStateChange(form.requestStore);
is(form.pageTitle.textContent, "Sample page title", "Check label");
is(form.pageTitleHeading.textContent, "Sample page title", "Check label");
is(form.backButton.textContent, "Back", "Check label");
form.backButton.scrollIntoView();

Просмотреть файл

@ -78,7 +78,7 @@ add_task(async function test_backButton() {
await asyncElementRendered();
let stateChangePromise = promiseStateChange(form.requestStore);
is(form.pageTitle.textContent, "Sample page title 2", "Check title");
is(form.pageTitleHeading.textContent, "Sample page title 2", "Check title");
is(form.backButton.textContent, "Back", "Check label");
synthesizeMouseAtCenter(form.backButton, {});

Просмотреть файл

@ -80,6 +80,26 @@ add_task(async function test_valid_currency_amount_cad() {
is(amount1.textContent, "CA$12.34", "Check output format");
});
add_task(async function test_valid_currency_amount_displayCode() {
amount1.value = 12.34;
info("showing the currency code");
await asyncElementRendered();
amount1.currency = "CAD";
await asyncElementRendered();
amount1.displayCode = true;
await asyncElementRendered();
is(amount1.getAttribute("value"), "12.34", "Check @value");
is(amount1.value, "12.34", "Check .value");
is(amount1.getAttribute("currency"), "CAD", "Check @currency");
is(amount1.currency, "CAD", "Check .currency");
is(amount1.textContent, "CA$12.34 CAD", "Check output format");
amount1.displayCode = false;
await asyncElementRendered();
});
add_task(async function test_valid_currency_amount_eur_batched_prop() {
info("setting two properties in a row synchronously");
amount1.value = 98.76;

Просмотреть файл

@ -8,6 +8,7 @@ Test the payment-dialog custom element
<title>Test the payment-dialog element</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/AddTask.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="sinon-2.3.2.js"></script>
<script src="payments_common.js"></script>
<script src="../../res/vendor/custom-elements.min.js"></script>
@ -93,6 +94,7 @@ add_task(async function test_viewAllButtonVisibility() {
let button = el1._viewAllButton;
ok(button.hidden, "Button is initially hidden when there are no items to show");
ok(isHidden(button), "Button should be visibly hidden since bug 1469464");
// Add a display item.
let request = deepClone(el1.requestStore.getState().request);
@ -180,6 +182,19 @@ add_task(async function test_completionStateChangesPrevented() {
}
});
add_task(async function test_scrollPaymentRequestPage() {
await setup();
info("making the payment-dialog container small to require scrolling");
el1.parentElement.style.height = "100px";
let summaryPageBody = document.querySelector("#payment-summary .page-body");
is(summaryPageBody.scrollTop, 0, "Page body not scrolled initially");
let securityCodeInput = summaryPageBody.querySelector("payment-method-picker input");
securityCodeInput.focus();
await new Promise(resolve => SimpleTest.executeSoon(resolve));
ok(summaryPageBody.scrollTop > 0, "Page body scrolled after focusing the CVV field");
el1.parentElement.style.height = "";
});
add_task(async function test_disconnect() {
await setup();

Просмотреть файл

@ -85,8 +85,7 @@
// Calculate positions taking care of arrowscrollbox
let scrollbox = this._scrollBox;
let eventY = aEvent.layerY + (scrollbox.boxObject.y - this.boxObject.y);
let scrollboxOffset = scrollbox.scrollBoxObject.y -
(scrollbox.boxObject.y - this.boxObject.y);
let scrollboxOffset = this.boxObject.y;
let eltY = elt.boxObject.y - scrollboxOffset;
let eltHeight = elt.boxObject.height;
@ -434,20 +433,20 @@
}
// We should display the drop indicator relative to the arrowscrollbox.
let sbo = this._scrollBox.scrollBoxObject;
let scrollbox = this._scrollBox.boxObject;
let newMarginTop = 0;
if (scrollDir == 0) {
let elt = this.firstChild;
while (elt && event.screenY > elt.boxObject.screenY +
elt.boxObject.height / 2)
elt = elt.nextSibling;
newMarginTop = elt ? elt.boxObject.screenY - sbo.screenY :
sbo.height;
newMarginTop = elt ? elt.boxObject.screenY - scrollbox.screenY :
scrollbox.height;
} else if (scrollDir == 1)
newMarginTop = sbo.height;
newMarginTop = scrollbox.height;
// Set the new marginTop based on arrowscrollbox.
newMarginTop += sbo.y - this._scrollBox.boxObject.y;
newMarginTop += scrollbox.y - this._scrollBox.boxObject.y;
this._indicatorBar.firstChild.style.marginTop = newMarginTop + "px";
this._indicatorBar.hidden = false;

Просмотреть файл

@ -103,7 +103,7 @@
<image class="fxaProfileImage"/>
</vbox>
<vbox flex="1" pack="center">
<hbox>
<hbox align="center">
<image class="fxaLoginRejectedWarning"/>
<description flex="1"
class="l10nArgsEmailAddress"
@ -123,7 +123,7 @@
<image class="fxaProfileImage"/>
</vbox>
<vbox flex="1" pack="center">
<hbox>
<hbox align="center">
<image class="fxaLoginRejectedWarning"/>
<description flex="1"
class="l10nArgsEmailAddress"

Просмотреть файл

@ -106,9 +106,8 @@ TabListComponent.prototype = {
},
onBookmarkTab(uri, title) {
this._window.top.PlacesCommandHook
.bookmarkLink(this._window.top.PlacesUtils.bookmarksMenuFolderId, uri, title)
.catch(Cu.reportError);
this._window.top.PlacesCommandHook.bookmarkLink(uri, title)
.catch(Cu.reportError);
},
onOpenTab(url, where, params) {

Просмотреть файл

@ -130,8 +130,8 @@ add_task(async function testActions() {
sinon.spy(windowMock.top.PlacesCommandHook, "bookmarkLink");
component.onBookmarkTab("uri", "title");
Assert.equal(windowMock.top.PlacesCommandHook.bookmarkLink.args[0][1], "uri");
Assert.equal(windowMock.top.PlacesCommandHook.bookmarkLink.args[0][2], "title");
Assert.equal(windowMock.top.PlacesCommandHook.bookmarkLink.args[0][0], "uri");
Assert.equal(windowMock.top.PlacesCommandHook.bookmarkLink.args[0][1], "title");
sinon.spy(windowMock, "openTrustedLinkIn");
component.onOpenTab("uri", "where", "params");

Просмотреть файл

@ -18,12 +18,8 @@ const RESOURCE_HOST = "activity-stream";
const BROWSER_READY_NOTIFICATION = "sessionstore-windows-restored";
const RESOURCE_BASE = "resource://activity-stream";
const ACTIVITY_STREAM_OPTIONS = {newTabURL: "about:newtab"};
let activityStream;
let modulesToUnload = new Set();
let startupData;
let startupReason;
let waitingForBrowserReady = true;
// Lazily load ActivityStream then find related modules to unload
@ -57,18 +53,15 @@ XPCOMUtils.defineLazyModuleGetter(this, "ActivityStream",
/**
* init - Initializes an instance of ActivityStream. This could be called by
* the startup() function exposed by bootstrap.js.
*
* @param {string} reason - Reason for initialization. Could be install, upgrade, or PREF_ON
*/
function init(reason) {
function init() {
// Don't re-initialize
if (activityStream && activityStream.initialized) {
return;
}
const options = Object.assign({}, startupData || {}, ACTIVITY_STREAM_OPTIONS);
activityStream = new ActivityStream(options);
activityStream = new ActivityStream();
try {
activityStream.init(reason);
activityStream.init();
} catch (e) {
Cu.reportError(e);
}
@ -125,7 +118,7 @@ function migratePref(oldPrefName, cbIfNotDefault) {
*/
function onBrowserReady() {
waitingForBrowserReady = false;
init(startupReason);
init();
// Do a one time migration of Tiles about:newtab prefs that have been modified
migratePref("browser.newtabpage.rows", rows => {
@ -171,11 +164,6 @@ this.startup = function startup(data, reason) {
Services.io.newURI("chrome/content/", null, data.resourceURI),
resProto.ALLOW_CONTENT_ACCESS);
// Cache startup data which contains stuff like the version number, etc.
// so we can use it when we init
startupData = data;
startupReason = reason;
// Only start Activity Stream up when the browser UI is ready
if (Services.startup.startingUp) {
Services.obs.addObserver(observe, BROWSER_READY_NOTIFICATION);
@ -189,8 +177,6 @@ this.shutdown = function shutdown(data, reason) {
resProto.setSubstitution(RESOURCE_HOST, null);
// Uninitialize Activity Stream
startupData = null;
startupReason = null;
uninit(reason);
// Stop waiting for browser to be ready

Просмотреть файл

@ -14,9 +14,7 @@ const dedupe = new Dedupe(site => site && site.url);
const INITIAL_STATE = {
App: {
// Have we received real data from the app yet?
initialized: false,
// The version of the system-addon
version: null
initialized: false
},
Snippets: {initialized: false},
TopSites: {

Просмотреть файл

@ -30,7 +30,7 @@ export class _Base extends React.PureComponent {
this.sendNewTabRehydrated(App);
addLocaleDataForReactIntl(locale);
if (this.props.isFirstrun) {
global.document.body.classList.add("welcome");
global.document.body.classList.add("welcome", "hide-main");
}
}
@ -56,9 +56,10 @@ export class _Base extends React.PureComponent {
updateTheme() {
const bodyClassName = [
"activity-stream",
// If we skipped the about:welcome overlay and removed the CSS class
// we don't want to add it back to the Activity Stream view
document.body.classList.contains("welcome") ? "welcome" : ""
// If we skipped the about:welcome overlay and removed the CSS classes
// we don't want to add them back to the Activity Stream view
document.body.classList.contains("welcome") ? "welcome" : "",
document.body.classList.contains("hide-main") ? "hide-main" : ""
].filter(v => v).join(" ");
global.document.body.className = bodyClassName;
}

Просмотреть файл

@ -15,6 +15,10 @@
}
main {
.hide-main & {
visibility: hidden;
}
margin: auto;
// Offset the snippets container so things at the bottom of the page are still
// visible when snippets / onboarding are visible. Adjust for other spacing.

Просмотреть файл

@ -30,6 +30,7 @@ export class _StartupOverlay extends React.PureComponent {
removeOverlay() {
window.removeEventListener("visibilitychange", this.removeOverlay);
document.body.classList.remove("hide-main");
this.setState({show: false});
setTimeout(() => {
// Allow scrolling and fully remove overlay after animation finishes.
@ -73,7 +74,7 @@ export class _StartupOverlay extends React.PureComponent {
let termsLink = (<a href="https://accounts.firefox.com/legal/terms" target="_blank" rel="noopener noreferrer"><FormattedMessage id="firstrun_terms_of_service" /></a>);
let privacyLink = (<a href="https://accounts.firefox.com/legal/privacy" target="_blank" rel="noopener noreferrer"><FormattedMessage id="firstrun_privacy_notice" /></a>);
return (
<div className={`overlay-wrapper ${this.state.show ? "show " : ""}`}>
<div className={`overlay-wrapper ${this.state.show ? "show" : ""}`}>
<div className="background" />
<div className="firstrun-scene">
<div className="fxaccounts-container">

Просмотреть файл

@ -13,6 +13,7 @@
.overlay-wrapper {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 21000;
@ -70,13 +71,15 @@
}
}
.background {
.background,
body.hide-main {
width: 100%;
height: 100%;
display: block;
background: url('#{$image-path}fox-tail.png') top -200px center no-repeat,
linear-gradient(to bottom, $blue-70 40%, #004EC2 60%, $blue-60 80%, #0080FF 90%, #00C7FF 100%) top center no-repeat,
$blue-70;
background-image: url('#{$image-path}fox-tail.png'), linear-gradient(to bottom, $blue-70 40%, #004EC2 60%, $blue-60 80%, #0080FF 90%, #00C7FF 100%);
background-position-x: center;
background-position-y: -200px, top;
background-repeat: no-repeat;
background-size: cover;
position: fixed;
}
@ -236,7 +239,7 @@
padding-bottom: 210px;
}
.firstrun-link {
a.firstrun-link {
color: $white;
display: block;
text-decoration: underline;

Просмотреть файл

@ -18,9 +18,13 @@ body {
font-size: 16px;
overflow-y: scroll;
&.hide-onboarding > #onboarding-overlay-button {
&.hide-onboarding, &.hide-main > #onboarding-overlay-button {
display: none !important;
}
&.hide-main > #onboarding-notification-bar {
display: none;
}
}
h1,

Просмотреть файл

@ -230,8 +230,10 @@ body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;
font-size: 16px;
overflow-y: scroll; }
body.hide-onboarding > #onboarding-overlay-button {
body.hide-onboarding, body.hide-main > #onboarding-overlay-button {
display: none !important; }
body.hide-main > #onboarding-notification-bar {
display: none; }
h1,
h2 {
@ -332,6 +334,8 @@ main {
margin: auto;
padding-bottom: 68px;
width: 274px; }
.hide-main main {
visibility: hidden; }
@media (min-width: 482px) {
main {
width: 402px; } }
@ -814,6 +818,7 @@ main {
.overlay-wrapper {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 21000;
@ -853,11 +858,15 @@ main {
transition: none;
opacity: 1; }
.background {
.background,
body.hide-main {
width: 100%;
height: 100%;
display: block;
background: url("../data/content/assets/fox-tail.png") top -200px center no-repeat, linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%) top center no-repeat, #003EAA;
background-image: url("../data/content/assets/fox-tail.png"), linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%);
background-position-x: center;
background-position-y: -200px, top;
background-repeat: no-repeat;
background-size: cover;
position: fixed; }
@ -976,11 +985,11 @@ main {
background: url("../data/content/assets/sync-devices.svg") bottom center no-repeat;
padding-bottom: 210px; }
.firstrun-link {
a.firstrun-link {
color: #FFF;
display: block;
text-decoration: underline; }
.firstrun-link:hover, .firstrun-link:active, .firstrun-link:focus {
a.firstrun-link:hover, a.firstrun-link:active, a.firstrun-link:focus {
color: #FFF; }
.firstrun-title {

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -233,8 +233,10 @@ body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;
font-size: 16px;
overflow-y: scroll; }
body.hide-onboarding > #onboarding-overlay-button {
body.hide-onboarding, body.hide-main > #onboarding-overlay-button {
display: none !important; }
body.hide-main > #onboarding-notification-bar {
display: none; }
h1,
h2 {
@ -335,6 +337,8 @@ main {
margin: auto;
padding-bottom: 68px;
width: 274px; }
.hide-main main {
visibility: hidden; }
@media (min-width: 482px) {
main {
width: 402px; } }
@ -817,6 +821,7 @@ main {
.overlay-wrapper {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 21000;
@ -856,11 +861,15 @@ main {
transition: none;
opacity: 1; }
.background {
.background,
body.hide-main {
width: 100%;
height: 100%;
display: block;
background: url("../data/content/assets/fox-tail.png") top -200px center no-repeat, linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%) top center no-repeat, #003EAA;
background-image: url("../data/content/assets/fox-tail.png"), linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%);
background-position-x: center;
background-position-y: -200px, top;
background-repeat: no-repeat;
background-size: cover;
position: fixed; }
@ -979,11 +988,11 @@ main {
background: url("../data/content/assets/sync-devices.svg") bottom center no-repeat;
padding-bottom: 210px; }
.firstrun-link {
a.firstrun-link {
color: #FFF;
display: block;
text-decoration: underline; }
.firstrun-link:hover, .firstrun-link:active, .firstrun-link:focus {
a.firstrun-link:hover, a.firstrun-link:active, a.firstrun-link:focus {
color: #FFF; }
.firstrun-title {

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -230,8 +230,10 @@ body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;
font-size: 16px;
overflow-y: scroll; }
body.hide-onboarding > #onboarding-overlay-button {
body.hide-onboarding, body.hide-main > #onboarding-overlay-button {
display: none !important; }
body.hide-main > #onboarding-notification-bar {
display: none; }
h1,
h2 {
@ -332,6 +334,8 @@ main {
margin: auto;
padding-bottom: 68px;
width: 274px; }
.hide-main main {
visibility: hidden; }
@media (min-width: 482px) {
main {
width: 402px; } }
@ -814,6 +818,7 @@ main {
.overlay-wrapper {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 21000;
@ -853,11 +858,15 @@ main {
transition: none;
opacity: 1; }
.background {
.background,
body.hide-main {
width: 100%;
height: 100%;
display: block;
background: url("../data/content/assets/fox-tail.png") top -200px center no-repeat, linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%) top center no-repeat, #003EAA;
background-image: url("../data/content/assets/fox-tail.png"), linear-gradient(to bottom, #003EAA 40%, #004EC2 60%, #0060DF 80%, #0080FF 90%, #00C7FF 100%);
background-position-x: center;
background-position-y: -200px, top;
background-repeat: no-repeat;
background-size: cover;
position: fixed; }
@ -976,11 +985,11 @@ main {
background: url("../data/content/assets/sync-devices.svg") bottom center no-repeat;
padding-bottom: 210px; }
.firstrun-link {
a.firstrun-link {
color: #FFF;
display: block;
text-decoration: underline; }
.firstrun-link:hover, .firstrun-link:active, .firstrun-link:focus {
a.firstrun-link:hover, a.firstrun-link:active, a.firstrun-link:focus {
color: #FFF; }
.firstrun-title {

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1543,7 +1543,7 @@ class _Base extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureComponent {
this.sendNewTabRehydrated(App);
addLocaleDataForReactIntl(locale);
if (this.props.isFirstrun) {
global.document.body.classList.add("welcome");
global.document.body.classList.add("welcome", "hide-main");
}
}
@ -1568,9 +1568,9 @@ class _Base extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureComponent {
updateTheme() {
const bodyClassName = ["activity-stream",
// If we skipped the about:welcome overlay and removed the CSS class
// we don't want to add it back to the Activity Stream view
document.body.classList.contains("welcome") ? "welcome" : ""].filter(v => v).join(" ");
// If we skipped the about:welcome overlay and removed the CSS classes
// we don't want to add them back to the Activity Stream view
document.body.classList.contains("welcome") ? "welcome" : "", document.body.classList.contains("hide-main") ? "hide-main" : ""].filter(v => v).join(" ");
global.document.body.className = bodyClassName;
}
@ -4644,6 +4644,7 @@ class _StartupOverlay extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureC
removeOverlay() {
window.removeEventListener("visibilitychange", this.removeOverlay);
document.body.classList.remove("hide-main");
this.setState({ show: false });
setTimeout(() => {
// Allow scrolling and fully remove overlay after animation finishes.
@ -4696,7 +4697,7 @@ class _StartupOverlay extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureC
);
return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
"div",
{ className: `overlay-wrapper ${this.state.show ? "show " : ""}` },
{ className: `overlay-wrapper ${this.state.show ? "show" : ""}` },
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("div", { className: "background" }),
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
"div",
@ -7691,9 +7692,7 @@ const dedupe = new Dedupe(site => site && site.url);
const INITIAL_STATE = {
App: {
// Have we received real data from the app yet?
initialized: false,
// The version of the system-addon
version: null
initialized: false
},
Snippets: { initialized: false },
TopSites: {

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -14,7 +14,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
```js
{
"addon_version": "1.0.0",
"addon_version": "20180710100040",
"client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
"locale": "en-US",
"version": "62.0a1",
@ -36,7 +36,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
{
// These fields are sent from the client
"action": "activity_stream_session",
"addon_version": "1.0.0",
"addon_version": "20180710100040",
"client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
"locale": "en-US",
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
@ -60,7 +60,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
{
"action": "activity_stream_user_event",
"action_position": "3",
"addon_version": "1.0.0",
"addon_version": "20180710100040",
"client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
"event": "click or scroll or search or delete",
"locale": "en-US",
@ -84,7 +84,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
```js
{
"action": "activity_stream_performance_event",
"addon_version": "1.0.0",
"addon_version": "20180710100040",
"client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
"event": "previewCacheHit",
"event_id": "45f1912165ca4dfdb5c1c2337dbdc58f",
@ -108,7 +108,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
```js
{
"action": "activity_stream_undesired_event",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"event": "MISSING_IMAGE",
"locale": "en-US",
@ -132,7 +132,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
"client_id": "n/a",
"session_id": "n/a",
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "pocket",
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"]
@ -147,7 +147,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
"client_id": "n/a",
"session_id": "n/a",
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "pocket",
"page": "unknown",
@ -169,7 +169,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
"action": ["snippets_user_event" | "onboarding_user_event"],
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"source": "pocket",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "NEWTAB_FOOTER_BAR",
"message_id": "some_snippet_id",
@ -181,7 +181,7 @@ Schema definitions/validations that can be used for tests can be found in `syste
|-----|-------------|:-----:|
| `action_position` | [Optional] The index of the element in the `source` that was clicked. | :one:
| `action` | [Required] Either `activity_stream_event`, `activity_stream_session`, or `activity_stream_performance`. | :one:
| `addon_version` | [Required] The version of the Activity Stream addon. | :one:
| `addon_version` | [Required] Firefox build ID, i.e. `Services.appinfo.appBuildID`. | :one:
| `client_id` | [Required] An identifier for this client. | :one:
| `card_type` | [Optional] ("bookmark", "pocket", "trending", "pinned") | :one:
| `date` | [Auto populated by Onyx] The date in YYYY-MM-DD format. | :three:

Просмотреть файл

@ -56,7 +56,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown" ],
  "client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"action": "activity_stream_event",
"user_prefs": 7
@ -76,7 +76,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
  "client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -99,7 +99,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -122,7 +122,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -145,7 +145,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -167,7 +167,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -189,7 +189,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -212,7 +212,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -235,7 +235,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -252,7 +252,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -269,7 +269,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -287,7 +287,7 @@ A user event ping includes some basic metadata (tab id, addon version, etc.) as
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
  "addon_version": "1.0.12",
  "addon_version": "20180710100040",
  "locale": "en-US",
"user_prefs": 7
}
@ -327,7 +327,7 @@ All `"activity_stream_session"` pings have the following basic shape. Some field
"action": "activity_stream_session",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"session_id": "005deed0-e3e4-4c02-a041-17405fd703f6",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
"session_duration": 4199,
@ -426,7 +426,7 @@ This reports all the Pocket recommended articles (a list of `id`s) when the user
"client_id": "n/a",
"session_id": "n/a",
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "pocket",
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
@ -447,7 +447,7 @@ This reports the user's interaction with those Pocket tiles.
"client_id": "n/a",
"session_id": "n/a",
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "pocket",
"page": ["about:newtab" | "about:home" | "about:welcome" | "unknown"],
@ -473,7 +473,7 @@ This reports the duration of the domain affinity calculation in milliseconds.
{
"action": "activity_stream_performance_event",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"user_prefs": 7,
"event": "topstories.domain.affinity.calculation.ms",
@ -493,7 +493,7 @@ This reports when the addon fails to initialize
{
"action": "activity_stream_undesired_event",
"client_id": "26288a14-5cc4-d14f-ae0a-bb01ef45be9c",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"user_prefs": 7,
"event": "ADDON_INIT_FAILED",
@ -514,7 +514,7 @@ This reports the impression of Activity Stream Router.
"action": ["snippets_user_event" | "onboarding_user_event"],
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"source": "pocket",
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"locale": "en-US",
"source": "NEWTAB_FOOTER_BAR",
"message_id": "some_snippet_id",
@ -531,7 +531,7 @@ This reports the user's interaction with Activity Stream Router.
{
"client_id": "n/a",
"action": ["snippets_user_event" | "onboarding_user_event"],
"addon_version": "1.0.12",
"addon_version": "20180710100040",
"impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
"locale": "en-US",
"source": "NEWTAB_FOOTER_BAR",

Просмотреть файл

@ -8,7 +8,7 @@
<em:type>2</em:type>
<em:bootstrap>true</em:bootstrap>
<em:unpack>false</em:unpack>
<em:version>2018.07.06.1113-783442c0</em:version>
<em:version>2018.07.12.1202-ecc4456e</em:version>
<em:name>Activity Stream</em:name>
<em:description>A rich visual history feed and a reimagined home page make it easier than ever to find exactly what you're looking for in Firefox.</em:description>
<em:multiprocessCompatible>true</em:multiprocessCompatible>

Просмотреть файл

@ -47,9 +47,13 @@ class ASRouterFeed {
onAction(action) {
switch (action.type) {
case at.INIT:
case at.PREF_CHANGED:
this.enableOrDisableBasedOnPref();
break;
case at.PREF_CHANGED:
if (["asrouterOnboardingCohort", "asrouterExperimentEnabled"].includes(action.data.name)) {
this.enableOrDisableBasedOnPref();
}
break;
case at.UNINIT:
this.disable();
break;

Просмотреть файл

@ -278,15 +278,9 @@ for (const config of FEEDS_DATA) {
this.ActivityStream = class ActivityStream {
/**
* constructor - Initializes an instance of ActivityStream
*
* @param {object} options Options for the ActivityStream instance
* @param {string} options.id Add-on ID. e.g. "activity-stream@mozilla.org".
* @param {string} options.version Version of the add-on. e.g. "0.1.0"
* @param {string} options.newTabURL URL of New Tab page on which A.S. is displayed. e.g. "about:newtab"
*/
constructor(options = {}) {
constructor() {
this.initialized = false;
this.options = options;
this.store = new Store();
this.feeds = FEEDS_CONFIG;
this._defaultPrefs = new DefaultPrefs(PREFS_CONFIG);
@ -300,7 +294,7 @@ this.ActivityStream = class ActivityStream {
// Hook up the store and let all feeds and pages initialize
this.store.init(this.feeds, ac.BroadcastToContent({
type: at.INIT,
data: {version: this.options.version}
data: {}
}), {type: at.UNINIT});
this.initialized = true;

Просмотреть файл

@ -288,9 +288,8 @@ this.TelemetryFeed = class TelemetryFeed {
* @return {obj} A telemetry ping
*/
createPing(portID) {
const appInfo = this.store.getState().App;
const ping = {
addon_version: appInfo.version,
addon_version: Services.appinfo.appBuildID,
locale: Services.locale.getAppLocaleAsLangTag(),
user_prefs: this.userPreferences
};
@ -366,10 +365,9 @@ this.TelemetryFeed = class TelemetryFeed {
}
createASRouterEvent(action) {
const appInfo = this.store.getState().App;
const ping = {
client_id: "n/a",
addon_version: appInfo.version,
addon_version: Services.appinfo.appBuildID,
locale: Services.locale.getAppLocaleAsLangTag(),
impression_id: this._impressionId
};

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=لمواصلة استخدام «تزامُن فَيَر
firstrun_email_input_placeholder=البريد الإلكتروني
firstrun_invalid_input=مطلوب بريد إلكتروني صالح
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=بمواصلة هذه العملية أنت توافق على {terms} و{privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=каб прадоўжыць з Firefox Sync.
firstrun_email_input_placeholder=Эл.пошта
firstrun_invalid_input=Патрабуецца сапраўдны адрас эл.пошты
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Працягваючы, вы згаджаецеся з {terms} і {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=за да продължите към Firefox Sync
firstrun_email_input_placeholder=адрес на електронна поща
firstrun_invalid_input=Необходим е валиден адрес на ел. поща
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Продължавайки, вие се съгласявате с {terms} и {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=evit kenderc'hel etrezek Firefox Sync.
firstrun_email_input_placeholder=Postel
firstrun_invalid_input=Postel talvoudek azgoulennet
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=En ur genderc'hel, e savit a-du gant an {terms} hag ar {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=per continuar al Firefox Sync.
firstrun_email_input_placeholder=Adreça electrònica
firstrun_invalid_input=Cal una adreça electrònica vàlida
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Si continueu, accepteu les {terms} i l'{privacy}.

Просмотреть файл

@ -78,7 +78,7 @@ search_web_placeholder=Vyhledat na webu
# LOCALIZATION NOTE (section_disclaimer_topstories): This is shown below
# the topstories section title to provide additional information about
# how the stories are selected.
section_disclaimer_topstories=Nejzajímavější příběhy na webu vybrané podle toho, co sami čtete. To je služba Pocket od Mozilly.
section_disclaimer_topstories=Nejzajímavější články na webu vybrané podle toho, co sami čtete. To je služba Pocket od Mozilly.
section_disclaimer_topstories_linktext=Zjistit, jak to funguje.
# LOCALIZATION NOTE (section_disclaimer_topstories_buttontext): The text of
# the button used to acknowledge, and hide this disclaimer in the future.
@ -98,7 +98,7 @@ prefs_section_rows_option={num} řádek;{num} řádky;{num} řádků
prefs_search_header=Vyhledávání na webu
prefs_topsites_description=Nejnavštěvovanější stránky
prefs_topstories_description2=Skvělý obsah z celého webu, vybraný speciálně pro vás
prefs_topstories_options_sponsored_label=Sponzorované příběhy
prefs_topstories_options_sponsored_label=Sponzorované články
prefs_topstories_sponsored_learn_more=Zjistit více
prefs_highlights_description=Výběr z uložených nebo navštívených stránek
prefs_highlights_options_visited_label=Navštívené stránky
@ -142,13 +142,13 @@ topsites_form_image_validation=Obrázek se nepodařilo načíst. Zkuste jinou UR
pocket_read_more=Populární témata:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=Zobrazit více příběhů
pocket_read_even_more=Zobrazit více článků
highlights_empty_state=Začněte prohlížet a my vám zde ukážeme některé skvělé články, videa a další stránky, které jste nedávno viděli nebo uložili do záložek.
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
# in the space that would have shown a few stories, this is shown instead.
# {provider} is replaced by the name of the content provider for this section.
topstories_empty_state=Už jste všechno přečetli. Další příběhy ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké příběhy z celého webu.
topstories_empty_state=Už jste všechno přečetli. Další články ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké články z celého webu.
# LOCALIZATION NOTE (manual_migration_explanation2): This message is shown to encourage users to
# import their browser profile from another browser they might be using.
@ -191,6 +191,8 @@ firstrun_form_sub_header=a používejte službu Firefox Sync.
firstrun_email_input_placeholder=E-mail
firstrun_invalid_input=Je požadován platný e-mail
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Pokračováním souhlasíte s {terms} a {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=i barhau i Firefox Sync.
firstrun_email_input_placeholder=E-bost
firstrun_invalid_input=Mae angen e-bost dilys
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Gan barhau, rydych yn cytuno i delerau'r {terms} a'r {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=aby z Firefox Sync pókšacował.
firstrun_email_input_placeholder=E-mail
firstrun_invalid_input=Płaśiwa e-mailowa adresa trěbna
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Gaž pókšacujośo, zwolijośo do {terms} a {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=για να συνεχίσετε στο Firefox Sync.
firstrun_email_input_placeholder=Email
firstrun_invalid_input=Απαιτείται έγκυρο email
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Συνεχίζοντας, συμφωνείτε με τους {terms} και τη {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=to continue to Firefox Sync.
firstrun_email_input_placeholder=Email
firstrun_invalid_input=Valid email required
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=By proceeding, you agree to the {terms} and {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=para pasar a Firefox Sync.
firstrun_email_input_placeholder=Correo electrónico
firstrun_invalid_input=Se requiere un correo electrónico válido
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Al proceder, acepta los {terms} y {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=para conectarte a Firefox Sync.
firstrun_email_input_placeholder=Correo
firstrun_invalid_input=Se requiere un correo válido
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Al proceder, aceptas los {terms} y la {privacy}.

Просмотреть файл

@ -102,7 +102,7 @@ prefs_topstories_options_sponsored_label=Historias patrocinadas
prefs_topstories_sponsored_learn_more=Más información
prefs_highlights_description=Una selección de sitios que ha guardado o visitado
prefs_highlights_options_visited_label=Páginas visitadas
prefs_highlights_options_download_label=Descargas recientes
prefs_highlights_options_download_label=Descargas más recientes
prefs_highlights_options_pocket_label=Páginas guardadas en Pocket
prefs_snippets_description=Actualizaciones de Mozilla y Firefox
settings_pane_button_label=Personalizar la página Nueva pestaña
@ -191,6 +191,7 @@ firstrun_form_sub_header=para acceder a Firefox Sync.
firstrun_email_input_placeholder=Correo electrónico
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Al continuar aceptas los {terms} y el {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=ngam jokkude to Firefox Sync
firstrun_email_input_placeholder=Iimeel
firstrun_invalid_input=Iimeel gollotooɗo hatojinaa
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Fuɗɗaade, woni a jaɓii {kuule} ɗee kam e {suturo}oo.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=om troch te gean nei Firefox Sync.
firstrun_email_input_placeholder=E-mailadres
firstrun_invalid_input=Jildich e-mailadres fereaske
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Troch fierder te gean, gean jo akkoard mei de {terms} en {privacy}.

Просмотреть файл

@ -96,10 +96,12 @@ prefs_home_description=चुनें जो सामग्री आप अ
prefs_section_rows_option={num} row;{num} rows
prefs_search_header=वेब खोज
prefs_topsites_description=साइटों आप सबसे अधिक यात्रा
prefs_topstories_description2=वेब से शानदार सामग्री, आपके लिए व्यक्तिगत बनाया गया
prefs_topstories_options_sponsored_label=प्रायोजित कहानियां
prefs_topstories_sponsored_learn_more=अधिक जानें
prefs_highlights_description=आपके द्वारा सहेजी गई या विज़िट की गई साइटों का चयन
prefs_highlights_options_visited_label=देखे गए पृष्ठ
prefs_highlights_options_pocket_label=पॉकेट में सहेजे गए पृष्ठ
prefs_snippets_description=Mozilla और Firefox से अद्यतन
settings_pane_button_label=अपने नए टैब पृष्ठ को अनुकूलित करें
settings_pane_topsites_header=सर्वोच्च साइटें
@ -175,6 +177,7 @@ section_menu_action_privacy_notice=गोपनीयता नीति
# LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the
# firstrun of the browser, they give an introduction to Firefox and Sync.
firstrun_title=अपने साथ Firefox चुने
firstrun_content=अपने सभी उपकरणों पर अपना पुस्तचिह्न, इतिहास, कूटशब्द और अन्य सेटिंग प्राप्त करें.
firstrun_learn_more_link=Firefox खातों के बारे में अधिक जानें
@ -186,6 +189,8 @@ firstrun_form_sub_header=Firefox सिंक के लिए जारी र
firstrun_email_input_placeholder=ईमेल
firstrun_invalid_input=वैध ईमेल आवश्यक
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=आगे बढ़ने से, आप {terms} और {privacy} से सहमत हैं|

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=zo byšće z Firefox Sync pokročował.
firstrun_email_input_placeholder=E-mejl
firstrun_invalid_input=Płaćiwa e-mejlowa adresa trěbna
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Hdyž pokročujeće, zwoliće do {terms} a {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=és lépjen tovább a Firefox Synchez.
firstrun_email_input_placeholder=E-mail
firstrun_invalid_input=Érvényes e-mail szükséges
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=A folytatással elfogadja a {terms} és az {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=pro continuar con Firefox Sync.
firstrun_email_input_placeholder=Email
firstrun_invalid_input=Il es necesse un valide adresse email
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Si tu procede, tu consenti a {terms} e {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=Lanjutkan ke Firefox Sync.
firstrun_email_input_placeholder=Surel
firstrun_invalid_input=Surel harus valid
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Dengan melanjutkan, Anda menyetujui {terms} dan {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=Firefox Sync-ზე გადასასვლელ
firstrun_email_input_placeholder=ელფოსტა
firstrun_invalid_input=მართებული ელფოსტის მითითება აუცილებელია
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=გაგრძელების შემთხვევაში, თქვენ ეთანხმებით {terms} და {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=akken ad tkemleḍ akked Firefox Sync
firstrun_email_input_placeholder=Imayl
firstrun_invalid_input=Imayl ameɣtu ilaq
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Ma tkemmleḍ, ad tqebleḍ {terms} d {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=Firefox синхрондауына жалғастыру
firstrun_email_input_placeholder=Эл. пошта
firstrun_invalid_input=Жарамды эл. пошта адресі керек
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Жалғастырсаңыз, {terms} және {privacy} шарттарымен келісесіз.

Просмотреть файл

@ -19,6 +19,7 @@ header_recommended_by=បានណែនាំដោយ {provider}
type_label_visited=បាន​ចូល​មើល
type_label_bookmarked=បាន​ចំណាំ
type_label_recommended=និន្នាការ
type_label_downloaded=បានទាញយក
# LOCALIZATION NOTE (menu_action_*): These strings are displayed in a context
# menu and are meant as a call to action for a given page.
@ -140,6 +141,7 @@ manual_migration_import_button=នាំចូលឥឡូវនេះ
# firstrun_form_header is displayed more boldly as the call to action.
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=pe continoâ con Firefox Sync.
firstrun_email_input_placeholder=Email
firstrun_invalid_input=Serve 'na email bonn-a
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Se ti væ avanti t'ê d'acòrdio co-i {terms} e l'{privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=untuk ke Firefox Sync
firstrun_email_input_placeholder=E-mel
firstrun_invalid_input=Perlu e-mel yang sah
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Dengan meneruskan, anda bersetuju dengan {terms} dan {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=for å fortsette til Firefox Sync.
firstrun_email_input_placeholder=E-post
firstrun_invalid_input=Gyldig e-post er nødvendig
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Ved å fortsette, godtar du {terms} og {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=for å fortsetje til Firefox Sync.
firstrun_email_input_placeholder=E-post
firstrun_invalid_input=Gyldig e-post påkravd
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Ved å fortsetje, godtek du {terms} og {privacy}.

Просмотреть файл

@ -44,7 +44,7 @@ prefs_search_header=Pasek wyszukiwania
prefs_topsites_description=Popularne odwiedzane strony
prefs_topstories_description2=Świetne rzeczy z całego Internetu, personalizowane specjalnie dla Ciebie
prefs_topstories_options_sponsored_label=Sponsorowane treści
prefs_topstories_sponsored_learn_more=Więcej informacji
prefs_topstories_sponsored_learn_more=Więcej informacji
prefs_highlights_description=Wybierane z zachowanych i odwiedzonych stron.
prefs_highlights_options_visited_label=Historia
prefs_highlights_options_download_label=Ostatnio pobrane pliki
@ -105,10 +105,11 @@ section_menu_action_privacy_notice=Uwagi dotyczące prywatności
firstrun_title=Zabierz swoje dane ze sobą
firstrun_content=Zakładki, historia, hasła i inne ustawienia mogą być dostępne i synchronizowane na wszystkich urządzeniach.
firstrun_learn_more_link=Więcej informacji
firstrun_learn_more_link=Więcej informacji
firstrun_form_header=Wprowadź adres e-mail
firstrun_form_sub_header=i zacznij korzystać z Firefox Sync
firstrun_email_input_placeholder=Adres e-mail
firstrun_invalid_input=Wymagany jest prawidłowy adres e-mail
firstrun_extra_legal_links=Kontynuując, akceptujesz {terms} i {privacy}.
firstrun_terms_of_service=warunki korzystania z usługi
firstrun_privacy_notice=uwagi dotyczące prywatności

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=para continuar para o Firefox Sync.
firstrun_email_input_placeholder=Email
firstrun_invalid_input=Email válido requerido
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Ao proceder, está a concordar com os {terms} e o {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=per cuntinuar cun Firefox Sync.
firstrun_email_input_placeholder=E-mail
firstrun_invalid_input=Adressa dad e-mail valida è obligatorica
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Cun cuntinuar acceptas ti las {terms} e las {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=да бисте наставили на Firefox Sync.
firstrun_email_input_placeholder=Адреса е-поште
firstrun_invalid_input=Исправна е-пошта се захтева
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Наставком, прихватате {terms} и {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=för att fortsätta till Firefox Sync.
firstrun_email_input_placeholder=E-post
firstrun_invalid_input=Giltig e-postadress krävs
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Genom att fortsätta godkänner du {terms} och {privacy}.

Просмотреть файл

@ -190,6 +190,8 @@ firstrun_form_header=ఈ ఈమెయిలును ఇవ్వండి
firstrun_email_input_placeholder=ఈమెయిలు
firstrun_invalid_input=సరైన ఈమెయిలు తప్పనిసరి
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=కొనసాగడం ద్వారా మీరు {terms}, {privacy} లను అంగీకరిస్తున్నారు.

Просмотреть файл

@ -1,21 +1,10 @@
newtab_page_title=Bagong Tab
default_label_loading=Pagkarga…
header_top_sites=Tuktok na mga Site
header_stories=Nangunguna na mga Kwento
header_highlights=Naka-highlight
header_visit_again=Bisitahin Muli
header_bookmarks=Kamakailang mga Bookmark
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
# of the corresponding content provider.
header_recommended_by=Inirekomenda ni {provider}
# LOCALIZATION NOTE(header_bookmarks_placeholder): This message is
# meant to inform that section contains no information because
# the user hasn't added any bookmarks.
header_bookmarks_placeholder=Wala kang anumang mga bookmark.
# LOCALIZATION NOTE(header_stories_from): This is followed by a logo of the
# corresponding content (stories) provider
header_stories_from=mula sa
# LOCALIZATION NOTE(context_menu_button_sr): This is for screen readers when
# the context menu button is focused/active. Title is the label or hostname of
@ -31,13 +20,8 @@ section_context_menu_button_sr=Buksan ang menu ng konteksto ng seksyon
# the page is bookmarked, or is currently open on another device
type_label_visited=Binisita
type_label_bookmarked=Bookmarked
type_label_synced=Naka-sync mula sa ibang kagamitan
type_label_recommended=Nagte-trend
type_label_pocket=I-save sa Pocket
# LOCALIZATION NOTE(type_label_open): Open is an adjective, as in "page is open"
type_label_open=Bukas
type_label_topic=Topiko
type_label_now=Ngayon
# LOCALIZATION NOTE (menu_action_*): These strings are displayed in a context
# menu and are meant as a call to action for a given page.
@ -45,8 +29,6 @@ type_label_now=Ngayon
# bookmarks"
menu_action_bookmark=Bookmark
menu_action_remove_bookmark=Alisin ang Bookmark
menu_action_copy_address=Kopyahin ang Address
menu_action_email_link=Email Link…
menu_action_open_new_window=Buksan sa isang Bagong Window
menu_action_open_private_window=Buksan sa isang Pribadong Bago na Window
menu_action_dismiss=Paalisin
@ -62,11 +44,14 @@ menu_action_save_to_pocket=I-save sa Pocket
menu_action_delete_pocket=I-delete sa Pocket
menu_action_archive_pocket=Mag-archive sa Pocket
# LOCALIZATION NOTE (search_for_something_with): {search_term} is a placeholder
# for what the user has typed in the search input field, e.g. 'Search for ' +
# search_term + 'with:' becomes 'Search for abc with:'
# The search engine name is displayed as an icon and does not need a translation
search_for_something_with=Maghanap ng mga {search_term} na may:
# LOCALIZATION NOTE (menu_action_show_file_*): These are platform specific strings
# found in the context menu of an item that has been downloaded. The intention behind
# "this action" is that it will show where the downloaded file exists on the file system
# for each operating system.
# LOCALIZATION NOTE (menu_action_copy_download_link, menu_action_go_to_download_page):
# "Download" here, in both cases, is not a verb, it is a noun. As in, "Copy the
# link that belongs to this downloaded item"
# LOCALIZATION NOTE (search_button): This is screenreader only text for the
# search button.
@ -80,13 +65,6 @@ search_header={search_engine_name} Hanapin
# LOCALIZATION NOTE (search_web_placeholder): This is shown in the searchbox when
# the user hasn't typed anything yet.
search_web_placeholder=Hanapin sa Web
search_settings=Baguhin ang mga Setting ng Paghahanap
# LOCALIZATION NOTE (section_info_option): This is the screenreader text for the
# (?) icon that would show a section's description with optional feedback link.
section_info_option=Impormasyon
section_info_send_feedback=Magbigay ng Feedback
section_info_privacy_notice=Abiso sa Privacy
# LOCALIZATION NOTE (section_disclaimer_topstories): This is shown below
# the topstories section title to provide additional information about
@ -97,19 +75,6 @@ section_disclaimer_topstories_linktext=Alamin kung paano ito gumagana.
# the button used to acknowledge, and hide this disclaimer in the future.
section_disclaimer_topstories_buttontext=Sige, nakuha ko
# LOCALIZATION NOTE (welcome_*): This is shown as a modal dialog, typically on a
# first-run experience when there's no data to display yet
welcome_title=Maligayang pagdating sa bagong tab
welcome_body=Firefox ay gagamit ng puwang upang ipakita ang iyong mga pinaka-kaugnay na bookmark, artikulo, video, at mga pahina ng kamakailan na iyong binisita, kaya maaari kang bumalik sa mga ito ng madali.
welcome_label=Ang pagkilala sa iyong Highlights
# LOCALIZATION NOTE (time_label_*): {number} is a placeholder for a number which
# represents a shortened timestamp format, e.g. '10m' means '10 minutes ago'.
time_label_less_than_minute=<1m
time_label_minute={number}m
time_label_hour={number}h
time_label_day={number}d
# LOCALIZATION NOTE (prefs_*, settings_*): These are shown in about:preferences
# for a "Firefox Home" section. "Firefox" should be treated as a brand and kept
# in English, while "Home" should be localized matching the about:preferences
@ -117,57 +82,29 @@ time_label_day={number}d
# what is shown for the homepage, new windows, and new tabs.
prefs_home_header=Nilalaman ng Home ng Firefox
prefs_home_description=Piliin kung anong nilalaman ang gusto mo sa iyong screen ng Home ng Firefox.
prefs_restore_defaults_button=Ibalik sa dating ayos
# LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
# plural forms used in a drop down of multiple row options (1 row, 2 rows).
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
prefs_section_rows_option={num} hilera;{num} mga hilera
prefs_search_header=Paghahanap sa Web
prefs_topsites_description=Ang mga site na iyong pinupuntahan
prefs_topstories_description=Maaaring makaligtaan ang mataas na kalidad na nilalaman
# LOCALIZATION NOTE (prefs_topstories_show_sponsored_label): {provider} is
# replaced by the name of the content provider for this section, e.g., "Pocket"
prefs_topstories_show_sponsored_label={provider} Mga Na-sponsor na Kwento
prefs_topstories_sponsored_learn_more=Matuto ng higit pa
prefs_highlights_description=Ang isang seleksyon ng mga site na iyong nai-save o binisita
prefs_snippets_description=Mga Update mula sa Mozilla at Firefox
settings_pane_button_label=I-customize ang iyong pahina ng Bagong Tab
settings_pane_header=Bagong Kagustuhan na Tab
settings_pane_body2=Piliin kung ano ang gusto mong makita sa pahinang ito.
settings_pane_search_header=Paghahanap
settings_pane_search_body=Hanapin sa Web mula sa iyong bagong tab.
settings_pane_topsites_header=Tuktok na mga Site
settings_pane_topsites_body=Ma-access ang mga website na karamihang binibisita.
settings_pane_topsites_options_showmore=Ipakita ang dalawang mga hanay
settings_pane_bookmarks_header=Kamakailang mga Bookmark
settings_pane_bookmarks_body=Ang iyong mga bagong gawang bookmark ay nsa isang madaling gamiting lokasyon.
settings_pane_visit_again_header=Bisitahin Muli
settings_pane_visit_again_body=Ipapakita sa iyo ng Firefox ang mga bahagi ng iyong kasaysayan ng pagba-browse na maaaring gusto mong matandaan o makabalik.
settings_pane_highlights_header=Mga highlight
settings_pane_highlights_body2=Hanapin ang iyong daan pabalik sa mga kagiliw-giliw na bagay na kamakailan mong binisita o na-bookmark.
settings_pane_highlights_options_bookmarks=Mga bookmark
settings_pane_highlights_options_visited=Mga binisitang site
# LOCALIZATION NOTE(settings_pane_snippets_header): For the "Snippets" feature
# traditionally on about:home. Alternative translation options: "Small Note" or
# something that expresses the idea of "a small message, shortened from
# something else, and non-essential but also not entirely trivial and useless."
settings_pane_snippets_header=Mga snippet
settings_pane_snippets_body=Magbasa ng maikli at matamis na mga update mula sa Mozilla tungkol sa Firefox, kultura sa internet, at paminsan-minsang random na meme.
settings_pane_done_button=Tapos
settings_pane_topstories_options_sponsored=Ipakita ang Mga Na-sponsor na Kuwento
# LOCALIZATION NOTE (edit_topsites_*): This is shown in the Edit Top Sites modal
# dialog.
edit_topsites_button_text=I-edit
edit_topsites_button_label=I-customize ang iyong Tuktok na mga seksyon ng Sites
edit_topsites_showmore_button=Magpakita ng higit pa
edit_topsites_showless_button=Magpakita ng mas kaunti
edit_topsites_done_button=Tapos
edit_topsites_pin_button=I-pin sa site na ito
edit_topsites_unpin_button=I-unpin ang site na ito
edit_topsites_edit_button=I-edit ang site na ito
edit_topsites_dismiss_button=I-dismiss sa site na ito
edit_topsites_add_button=Idagdag
# LOCALIZATION NOTE (topsites_form_*): This is shown in the New/Edit Topsite modal.
topsites_form_add_header=Bagong nangungunang site
@ -192,12 +129,6 @@ pocket_read_more=Tanyag na mga paksa:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=Tignan ang higit pang mga kuwento
# LOCALIZATION NOTE (pocket_feedback_header): This is shown as an introduction
# to Pocket as part of the feedback form.
pocket_feedback_header=Ang pinakamahusay sa web, na gawa ng higit sa 25 milyong tao.
# LOCALIZATION NOTE (pocket_description): This is shown in the settings pane and
# below (pocket_feedback_header) to provide more information about Pocket.
pocket_description=Tuklasin ang mataas na kalidad na nilalaman na maaari mong makaligtaan, sa tulong ng Pocket, ay bahagi na ngayon ng Mozilla.
highlights_empty_state=Magsimulang mag-browse, at ipapakita namin ang ilan sa mga magagandang artikulo, video, at iba pang mga pahina na kamakailan mong binisita o na-bookmark dito.
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
@ -230,3 +161,17 @@ section_menu_action_add_topsite=Magdagdag ng Nangungunang Site
section_menu_action_move_up=Ilipat Up
section_menu_action_move_down=Ilipat sa Baba
section_menu_action_privacy_notice=Paunawa sa Privacy
# LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the
# firstrun of the browser, they give an introduction to Firefox and Sync.
# LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
# firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
# firstrun_form_header is displayed more boldly as the call to action.
firstrun_email_input_placeholder=Email
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=e-posta adresinizi yazın.
firstrun_email_input_placeholder=E-posta
firstrun_invalid_input=Geçerli bir e-posta gerekiyor
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Devam ederseniz {terms} ve {privacy} kabul etmiş sayılırsınız.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=для продовження в Синхронізац
firstrun_email_input_placeholder=Е-пошта
firstrun_invalid_input=Необхідна адреса електронної пошти
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Продовжуючи, ви приймаєте {terms} і {privacy}.

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=继续使用 Firefox 同步服务。
firstrun_email_input_placeholder=电子邮件
firstrun_invalid_input=需要有效的电子邮件地址
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=若您选择继续,即表示您同意我们的{terms}和{privacy}。

Просмотреть файл

@ -191,6 +191,8 @@ firstrun_form_sub_header=繼續前往 Firefox Sync。
firstrun_email_input_placeholder=電子郵件
firstrun_invalid_input=必須輸入有效的電子郵件地址
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=若繼續,代表您同意{terms}及{privacy}。

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "أدخِل بريدك الإلكتروني",
"firstrun_form_sub_header": "لمواصلة استخدام «تزامُن فَيَرفُكس»",
"firstrun_email_input_placeholder": "البريد الإلكتروني",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "مطلوب بريد إلكتروني صالح",
"firstrun_extra_legal_links": "بمواصلة هذه العملية أنت توافق على {terms} و{privacy}.",
"firstrun_terms_of_service": "بنود الخدمة",
"firstrun_privacy_notice": "تنويه الخصوصية",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Увядзіце сваю электронную пошту",
"firstrun_form_sub_header": "каб прадоўжыць з Firefox Sync.",
"firstrun_email_input_placeholder": "Эл.пошта",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Патрабуецца сапраўдны адрас эл.пошты",
"firstrun_extra_legal_links": "Працягваючы, вы згаджаецеся з {terms} і {privacy}.",
"firstrun_terms_of_service": "умовамі абслугоўвання",
"firstrun_privacy_notice": "паведамленнем аб прыватнасці",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Въведете своята ел. поща,",
"firstrun_form_sub_header": "за да продължите към Firefox Sync",
"firstrun_email_input_placeholder": "адрес на електронна поща",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Необходим е валиден адрес на ел. поща",
"firstrun_extra_legal_links": "Продължавайки, вие се съгласявате с {terms} и {privacy}.",
"firstrun_terms_of_service": "Условията на услугата",
"firstrun_privacy_notice": "Политиката за лични данни",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Enankit ho chomlec'h postel",
"firstrun_form_sub_header": "evit kenderc'hel etrezek Firefox Sync.",
"firstrun_email_input_placeholder": "Postel",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Postel talvoudek azgoulennet",
"firstrun_extra_legal_links": "En ur genderc'hel, e savit a-du gant an {terms} hag ar {privacy}.",
"firstrun_terms_of_service": "divizoù arver",
"firstrun_privacy_notice": "evezhiadennoù a-fet buhez prevez",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Introduïu la vostra adreça electrònica",
"firstrun_form_sub_header": "per continuar al Firefox Sync.",
"firstrun_email_input_placeholder": "Adreça electrònica",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Cal una adreça electrònica vàlida",
"firstrun_extra_legal_links": "Si continueu, accepteu les {terms} i l'{privacy}.",
"firstrun_terms_of_service": "Condicions del servei",
"firstrun_privacy_notice": "Avís de privadesa",

Просмотреть файл

@ -35,7 +35,7 @@ window.gActivityStreamStrings = {
"search_button": "Vyhledat",
"search_header": "Vyhledat pomocí {search_engine_name}",
"search_web_placeholder": "Vyhledat na webu",
"section_disclaimer_topstories": "Nejzajímavější příběhy na webu vybrané podle toho, co sami čtete. To je služba Pocket od Mozilly.",
"section_disclaimer_topstories": "Nejzajímavější články na webu vybrané podle toho, co sami čtete. To je služba Pocket od Mozilly.",
"section_disclaimer_topstories_linktext": "Zjistit, jak to funguje.",
"section_disclaimer_topstories_buttontext": "Ok, rozumím",
"prefs_home_header": "Obsah domovské stránky Firefoxu",
@ -44,7 +44,7 @@ window.gActivityStreamStrings = {
"prefs_search_header": "Vyhledávání na webu",
"prefs_topsites_description": "Nejnavštěvovanější stránky",
"prefs_topstories_description2": "Skvělý obsah z celého webu, vybraný speciálně pro vás",
"prefs_topstories_options_sponsored_label": "Sponzorované příběhy",
"prefs_topstories_options_sponsored_label": "Sponzorované články",
"prefs_topstories_sponsored_learn_more": "Zjistit více",
"prefs_highlights_description": "Výběr z uložených nebo navštívených stránek",
"prefs_highlights_options_visited_label": "Navštívené stránky",
@ -73,9 +73,9 @@ window.gActivityStreamStrings = {
"topsites_form_url_validation": "Je vyžadována platná URL",
"topsites_form_image_validation": "Obrázek se nepodařilo načíst. Zkuste jinou URL adresu.",
"pocket_read_more": "Populární témata:",
"pocket_read_even_more": "Zobrazit více příběhů",
"pocket_read_even_more": "Zobrazit více článků",
"highlights_empty_state": "Začněte prohlížet a my vám zde ukážeme některé skvělé články, videa a další stránky, které jste nedávno viděli nebo uložili do záložek.",
"topstories_empty_state": "Už jste všechno přečetli. Další příběhy ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké příběhy z celého webu.",
"topstories_empty_state": "Už jste všechno přečetli. Další články ze služby {provider} tu najdete zase později. Ale pokud se nemůžete dočkat, vyberte své oblíbené téma a podívejte se na další velké články z celého webu.",
"manual_migration_explanation2": "Vyzkoušejte Firefox se záložkami, historií a hesly z jiného vašeho prohlížeče.",
"manual_migration_cancel_button": "Ne, děkuji",
"manual_migration_import_button": "Importovat nyní",
@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Zadejte svoji e-mailovou adresu",
"firstrun_form_sub_header": "a používejte službu Firefox Sync.",
"firstrun_email_input_placeholder": "E-mail",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Je požadován platný e-mail",
"firstrun_extra_legal_links": "Pokračováním souhlasíte s {terms} a {privacy}.",
"firstrun_terms_of_service": "Podmínkami používání služby",
"firstrun_privacy_notice": "Zásadami ochrany soukromí",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Rhowch eich e-bost",
"firstrun_form_sub_header": "i barhau i Firefox Sync.",
"firstrun_email_input_placeholder": "E-bost",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Mae angen e-bost dilys",
"firstrun_extra_legal_links": "Gan barhau, rydych yn cytuno i delerau'r {terms} a'r {privacy}.",
"firstrun_terms_of_service": "Amodau Gwasanaeth",
"firstrun_privacy_notice": "Hysbysiad Preifatrwydd",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Zapódajśo swóju e-mailowu adresu",
"firstrun_form_sub_header": "aby z Firefox Sync pókšacował.",
"firstrun_email_input_placeholder": "E-mail",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Płaśiwa e-mailowa adresa trěbna",
"firstrun_extra_legal_links": "Gaž pókšacujośo, zwolijośo do {terms} a {privacy}.",
"firstrun_terms_of_service": "Wužywańske wuměnjenja",
"firstrun_privacy_notice": "Powěźeńka priwatnosći",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Εισάγετε το email σας",
"firstrun_form_sub_header": "για να συνεχίσετε στο Firefox Sync.",
"firstrun_email_input_placeholder": "Email",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Απαιτείται έγκυρο email",
"firstrun_extra_legal_links": "Συνεχίζοντας, συμφωνείτε με τους {terms} και τη {privacy}.",
"firstrun_terms_of_service": "Όρους Υπηρεσίας",
"firstrun_privacy_notice": "Σημείωση Απορρήτου",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Ingrese su correo electrónico",
"firstrun_form_sub_header": "para pasar a Firefox Sync.",
"firstrun_email_input_placeholder": "Correo electrónico",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Se requiere un correo electrónico válido",
"firstrun_extra_legal_links": "Al proceder, acepta los {terms} y {privacy}.",
"firstrun_terms_of_service": "Términos del servicio",
"firstrun_privacy_notice": "Anuncio de privacidad",

Просмотреть файл

@ -96,7 +96,7 @@ window.gActivityStreamStrings = {
"firstrun_form_header": "Ingresa tu correo",
"firstrun_form_sub_header": "para conectarte a Firefox Sync.",
"firstrun_email_input_placeholder": "Correo",
"firstrun_invalid_input": "Valid email required",
"firstrun_invalid_input": "Se requiere un correo válido",
"firstrun_extra_legal_links": "Al proceder, aceptas los {terms} y la {privacy}.",
"firstrun_terms_of_service": "Términos del servicio",
"firstrun_privacy_notice": "Política de privacidad",

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше