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

This commit is contained in:
Margareta Eliza Balazs 2018-01-09 12:16:12 +02:00
Родитель f8c3842c38 03877052c1
Коммит 3ab3149a84
349 изменённых файлов: 9234 добавлений и 6799 удалений

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

@ -9,7 +9,7 @@ replace-with = 'vendored-sources'
[source."https://github.com/gankro/serde"]
git = "https://github.com/gankro/serde"
branch = "deserialize_from_enums3"
branch = "deserialize_from_enums4"
replace-with = "vendored-sources"
[source.vendored-sources]

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

@ -1114,11 +1114,6 @@ BrowserGlue.prototype = {
// early, so we use a maximum timeout for it.
Services.tm.idleDispatchToMainThread(() => {
SafeBrowsing.init();
// Login reputation depends on the Safe Browsing API.
let reputationService = Cc["@mozilla.org/reputationservice/login-reputation-service;1"]
.getService(Ci.nsILoginReputationService);
reputationService.init();
}, 5000);
if (AppConstants.MOZ_CRASHREPORTER) {

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

@ -17,7 +17,7 @@ add_task(async function() {
await withSidebarTree("bookmarks", async function(tree) {
// Select the new bookmark in the sidebar.
tree.selectItems([newBookmark.guid]);
ok(tree.controller.isCommandEnabled("placesCmd_new:folder"),
Assert.ok(tree.controller.isCommandEnabled("placesCmd_new:folder"),
"'placesCmd_new:folder' on current selected node is enabled");
// Create a new folder. Since the new bookmark is selected, and new items

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

@ -18,14 +18,14 @@ add_task(async function() {
await withBookmarksDialog(true, AddKeywordForSearchField, async function(dialogWin) {
let acceptBtn = dialogWin.document.documentElement.getButton("accept");
ok(acceptBtn.disabled, "Accept button is disabled");
Assert.ok(acceptBtn.disabled, "Accept button is disabled");
let promiseKeywordNotification = PlacesTestUtils.waitForNotification(
"onItemChanged", (itemId, prop, isAnno, val) => prop == "keyword" && val == "kw");
fillBookmarkTextField("editBMPanel_keywordField", "kw", dialogWin);
ok(!acceptBtn.disabled, "Accept button is enabled");
Assert.ok(!acceptBtn.disabled, "Accept button is enabled");
// The dialog is instant apply.
await promiseKeywordNotification;
@ -37,18 +37,18 @@ add_task(async function() {
entry = await PlacesUtils.keywords.fetch("kw");
return !!entry;
}, "Unable to find the expected keyword");
is(entry.keyword, "kw", "keyword is correct");
is(entry.url.href, TEST_URL, "URL is correct");
is(entry.postData, "accenti%3D%E0%E8%EC%F2%F9&search%3D%25s", "POST data is correct");
Assert.equal(entry.keyword, "kw", "keyword is correct");
Assert.equal(entry.url.href, TEST_URL, "URL is correct");
Assert.equal(entry.postData, "accenti%3D%E0%E8%EC%F2%F9&search%3D%25s", "POST data is correct");
info("Check the charset has been saved");
let charset = await PlacesUtils.getCharsetForURI(NetUtil.newURI(TEST_URL));
is(charset, "windows-1252", "charset is correct");
Assert.equal(charset, "windows-1252", "charset is correct");
// Now check getShortcutOrURI.
let data = await getShortcutOrURIAndPostData("kw test");
is(getPostDataString(data.postData), "accenti=\u00E0\u00E8\u00EC\u00F2\u00F9&search=test", "getShortcutOrURI POST data is correct");
is(data.url, TEST_URL, "getShortcutOrURI URL is correct");
Assert.equal(getPostDataString(data.postData), "accenti=\u00E0\u00E8\u00EC\u00F2\u00F9&search=test", "getShortcutOrURI POST data is correct");
Assert.equal(data.url, TEST_URL, "getShortcutOrURI URL is correct");
}, closeHandler);
});
});

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

@ -4,8 +4,7 @@ add_task(async function() {
info("Add a live bookmark editing its data");
await withSidebarTree("bookmarks", async function(tree) {
let itemId = PlacesUIUtils.leftPaneQueries.UnfiledBookmarks;
tree.selectItems([itemId]);
tree.selectItems([PlacesUtils.bookmarks.unfiledGuid]);
await withBookmarksDialog(
true,
@ -26,13 +25,13 @@ add_task(async function() {
index: PlacesUtils.bookmarks.DEFAULT_INDEX
});
is(bookmark.title, "modified", "folder name has been edited");
Assert.equal(bookmark.title, "modified", "folder name has been edited");
let livemark = await PlacesUtils.livemarks.getLivemark({
guid: bookmark.guid
});
is(livemark.feedURI.spec, "http://livemark.com/", "livemark has the correct url");
is(livemark.title, "modified", "livemark has the correct title");
Assert.equal(livemark.feedURI.spec, "http://livemark.com/", "livemark has the correct url");
Assert.equal(livemark.title, "modified", "livemark has the correct title");
}
);
});

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

@ -22,7 +22,7 @@ add_task(async function() {
},
async dialog => {
let acceptBtn = dialog.document.documentElement.getButton("accept");
ok(!acceptBtn.disabled, "Accept button is enabled");
Assert.ok(!acceptBtn.disabled, "Accept button is enabled");
let namepicker = dialog.document.getElementById("editBMPanel_namePicker");
Assert.ok(!namepicker.readOnly, "Name field is writable");
@ -36,7 +36,7 @@ add_task(async function() {
},
dialog => {
let savedItemId = dialog.gEditItemOverlay.itemId;
ok(savedItemId > 0, "Found the itemId");
Assert.ok(savedItemId > 0, "Found the itemId");
return PlacesTestUtils.waitForNotification("onItemRemoved",
id => id === savedItemId);
}

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

@ -4,10 +4,9 @@ add_task(async function() {
info("Bug 479348 - Properties on a root should be read-only.");
await withSidebarTree("bookmarks", async function(tree) {
let itemId = PlacesUIUtils.leftPaneQueries.UnfiledBookmarks;
tree.selectItems([itemId]);
ok(tree.controller.isCommandEnabled("placesCmd_show:info"),
"'placesCmd_show:info' on current selected node is enabled");
tree.selectItems([PlacesUtils.bookmarks.unfiledGuid]);
Assert.ok(tree.controller.isCommandEnabled("placesCmd_show:info"),
"'placesCmd_show:info' on current selected node is enabled");
await withBookmarksDialog(
true,
@ -16,26 +15,24 @@ add_task(async function() {
},
async function test(dialogWin) {
// Check that the dialog is read-only.
ok(dialogWin.gEditItemOverlay.readOnly, "Dialog is read-only");
Assert.ok(dialogWin.gEditItemOverlay.readOnly, "Dialog is read-only");
// Check that accept button is disabled
let acceptButton = dialogWin.document.documentElement.getButton("accept");
ok(acceptButton.disabled, "Accept button is disabled");
Assert.ok(acceptButton.disabled, "Accept button is disabled");
// Check that name picker is read only
let namepicker = dialogWin.document.getElementById("editBMPanel_namePicker");
ok(namepicker.readOnly, "Name field is read-only");
is(namepicker.value,
PlacesUtils.bookmarks.getItemTitle(PlacesUtils.unfiledBookmarksFolderId),
"Node title is correct");
Assert.ok(namepicker.readOnly, "Name field is read-only");
let bookmark = await PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.unfiledGuid);
Assert.equal(namepicker.value, bookmark.title, "Node title is correct");
// Blur the field and ensure root's name has not been changed.
namepicker.blur();
is(namepicker.value,
PlacesUtils.bookmarks.getItemTitle(PlacesUtils.unfiledBookmarksFolderId),
"Root title is correct");
bookmark = await PlacesUtils.bookmarks.fetch(PlacesUtils.bookmarks.unfiledGuid);
Assert.equal(namepicker.value, bookmark.title, "Root title is correct");
// Check the shortcut's title.
let bookmark = await PlacesUtils.bookmarks.fetch(tree.selectedNode.bookmarkGuid);
is(bookmark.title, "",
"Shortcut title is null");
info(tree.selectedNode.bookmarkGuid);
bookmark = await PlacesUtils.bookmarks.fetch(tree.selectedNode.bookmarkGuid);
Assert.equal(bookmark.title, "", "Shortcut title is null");
}
);
});

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

@ -407,6 +407,8 @@ main {
white-space: nowrap; }
.top-sites-list .top-site-outer .title.pinned span {
padding: 0 13px; }
.top-sites-list .top-site-outer .edit-button {
background-image: url("../data/content/assets/glyph-edit-16.svg"); }
.top-sites-list .top-site-outer .edit-menu {
background: #FFF;
border: 1px solid #B1B1B3;

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

@ -407,6 +407,8 @@ main {
white-space: nowrap; }
.top-sites-list .top-site-outer .title.pinned span {
padding: 0 13px; }
.top-sites-list .top-site-outer .edit-button {
background-image: url("../data/content/assets/glyph-edit-16.svg"); }
.top-sites-list .top-site-outer .edit-menu {
background: #FFF;
border: 1px solid #B1B1B3;

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

@ -407,6 +407,8 @@ main {
white-space: nowrap; }
.top-sites-list .top-site-outer .title.pinned span {
padding: 0 13px; }
.top-sites-list .top-site-outer .edit-button {
background-image: url("../data/content/assets/glyph-edit-16.svg"); }
.top-sites-list .top-site-outer .edit-menu {
background: #FFF;
border: 1px solid #B1B1B3;

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

@ -2513,13 +2513,10 @@ class TopSite_TopSiteLink extends external__React__default.a.PureComponent {
* Helper to determine whether the drop zone should allow a drop. We only allow
* dropping top sites for now.
*/
_allowDrop(e, index) {
let draggedIndex = parseInt(e.dataTransfer.getData("text/topsite-index"), 10);
if (!isNaN(draggedIndex) && draggedIndex !== index) {
return true;
}
return false;
_allowDrop(e) {
return e.dataTransfer.types.includes("text/topsite-index");
}
onDragEvent(event) {
switch (event.type) {
case "dragstart":
@ -2531,11 +2528,10 @@ class TopSite_TopSiteLink extends external__React__default.a.PureComponent {
case "dragend":
this.props.onDragEvent(event);
break;
case "dragover":
case "dragenter":
case "dragleave":
case "dragover":
case "drop":
if (this._allowDrop(event, this.props.index)) {
if (this._allowDrop(event)) {
event.preventDefault();
this.props.onDragEvent(event, this.props.index);
}
@ -2585,7 +2581,7 @@ class TopSite_TopSiteLink extends external__React__default.a.PureComponent {
}
return external__React__default.a.createElement(
"li",
_extends({ className: topSiteOuterClassName, key: link.guid || link.url, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps),
_extends({ className: topSiteOuterClassName, onDrop: this.onDragEvent, onDragOver: this.onDragEvent, onDragEnter: this.onDragEvent, onDragLeave: this.onDragEvent }, draggableProps),
external__React__default.a.createElement(
"div",
{ className: "top-site-inner" },
@ -2773,14 +2769,9 @@ class TopSite_TopSitePlaceholder extends external__React__default.a.PureComponen
return external__React__default.a.createElement(
TopSite_TopSiteLink,
_extends({ className: "placeholder", isDraggable: false }, this.props),
external__React__default.a.createElement(
"div",
{ className: "edit-menu" },
external__React__default.a.createElement("button", {
className: "icon icon-edit",
title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }),
onClick: this.onEditButtonClick })
)
external__React__default.a.createElement("button", { className: "context-menu-button edit-button icon",
title: this.props.intl.formatMessage({ id: "edit_topsites_edit_button" }),
onClick: this.onEditButtonClick })
);
}
}
@ -2827,19 +2818,20 @@ class TopSite__TopSiteList extends external__React__default.a.PureComponent {
this.setState(this.DEFAULT_STATE);
break;
case "dragenter":
this.setState({ topSitesPreview: this._makeTopSitesPreview(index) });
break;
case "dragleave":
this.setState({ topSitesPreview: null });
if (index === this.state.draggedIndex) {
this.setState({ topSitesPreview: null });
} else {
this.setState({ topSitesPreview: this._makeTopSitesPreview(index) });
}
break;
case "drop":
this.props.dispatch(Actions["actionCreators"].SendToMain({
type: Actions["actionTypes"].TOP_SITES_INSERT,
data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index }
}));
this.userEvent("DROP", index);
break;
default:
if (index !== this.state.draggedIndex) {
this.props.dispatch(Actions["actionCreators"].SendToMain({
type: Actions["actionTypes"].TOP_SITES_INSERT,
data: { site: { url: this.state.draggedSite.url, label: this.state.draggedTitle }, index }
}));
this.userEvent("DROP", index);
}
break;
}
}
@ -2907,10 +2899,15 @@ class TopSite__TopSiteList extends external__React__default.a.PureComponent {
dispatch: props.dispatch,
intl: props.intl
};
// We assign a key to each placeholder slot. We need it to be independent
// of the slot index (i below) so that the keys used stay the same during
// drag and drop reordering and the underlying DOM nodes are reused.
// This mostly (only?) affects linux so be sure to test on linux before changing.
let holeIndex = 0;
for (let i = 0, l = props.TopSitesCount; i < l; i++) {
const link = topSites[i];
const slotProps = {
key: i,
key: link ? link.url : holeIndex++,
index: i
};
topSitesUI.push(!link ? external__React__default.a.createElement(TopSite_TopSitePlaceholder, _extends({}, slotProps, commonProps)) : external__React__default.a.createElement(TopSite_TopSite, _extends({

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

@ -8,7 +8,7 @@
<em:type>2</em:type>
<em:bootstrap>true</em:bootstrap>
<em:unpack>false</em:unpack>
<em:version>2017.12.22.0055-8fe1055e</em:version>
<em:version>2018.01.05.1410-84fd2871</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>

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

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

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

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

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

@ -38,9 +38,9 @@ window.gActivityStreamStrings = {
"section_info_option": "Məlumat",
"section_info_send_feedback": "Əks-əlaqə göndər",
"section_info_privacy_notice": "Məxfilik Bildirişi",
"section_disclaimer_topstories": "The most interesting stories on the web, selected based on what you read. From Pocket, now part of Mozilla.",
"section_disclaimer_topstories_linktext": "Learn how it works.",
"section_disclaimer_topstories_buttontext": "Okay, got it",
"section_disclaimer_topstories": "Nələr oxuduğunuza əsasən seçilmiş internetin ən maraqlı hekayələri. Pocket-dən, artıq Mozillanın bir hissəsi.",
"section_disclaimer_topstories_linktext": "Necə işlədiyini öyrənin.",
"section_disclaimer_topstories_buttontext": "Tamam, başa düşdüm",
"welcome_title": "Yeni vərəqə xoş gəldiniz",
"welcome_body": "Firefox bu səhifədə ən uyğun əlfəcin, məqalə, video və son ziyarət etdiyiniz səhifələri göstərərək onları rahat tapmağınıza kömək edəcək.",
"welcome_label": "Seçilmişləriniz təyin edilir",
@ -67,7 +67,7 @@ window.gActivityStreamStrings = {
"settings_pane_snippets_header": "Hissələr",
"settings_pane_snippets_body": "Mozilladan Firefox, internet mədəniyyəti və digər yeniliklər haqqında qısa bildirişlər oxuyun.",
"settings_pane_done_button": "Oldu",
"settings_pane_topstories_options_sponsored": "Show Sponsored Stories",
"settings_pane_topstories_options_sponsored": "Sponsor Hekayələrini Göstər",
"edit_topsites_button_text": "Redaktə et",
"edit_topsites_button_label": "Qabaqcıl Saytlar bölümünüzü fərdiləşdirin",
"edit_topsites_showmore_button": "Daha çox göstər",

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -45,7 +45,7 @@ window.gActivityStreamStrings = {
"welcome_body": "Firefox will use this space to show your most relevant bookmarks, articles, videos, and pages youve recently visited, so you can get back to them easily.",
"welcome_label": "Heɓtinde Jalbine maa",
"time_label_less_than_minute": "<1m",
"time_label_minute": "{number}m",
"time_label_minute": "{number} m",
"time_label_hour": "{number}h",
"time_label_day": "{number}d",
"settings_pane_button_label": "Customize your New Tab page",

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -38,9 +38,9 @@ window.gActivityStreamStrings = {
"section_info_option": "जानकारी",
"section_info_send_feedback": "प्रतिक्रिया पठाउनुहोस्",
"section_info_privacy_notice": "गोपनीयता नीति",
"section_disclaimer_topstories": "The most interesting stories on the web, selected based on what you read. From Pocket, now part of Mozilla.",
"section_disclaimer_topstories_linktext": "Learn how it works.",
"section_disclaimer_topstories_buttontext": "Okay, got it",
"section_disclaimer_topstories": "वेबमा सबैभन्दा रोचक कथाहरू, तपाईंले पढ्नु भएको आधारमा Pocket बाट चयन गर्नुभएको छ।",
"section_disclaimer_topstories_linktext": "कसरी काम गर्छ हेर्नुहोस्।",
"section_disclaimer_topstories_buttontext": "बुझेँ",
"welcome_title": "नयाँ ट्याबमा स्वागत छ",
"welcome_body": "Firefoxले यस ठाउँको प्रयोग तपाईंको सबैभन्दा सान्दर्भिक पुस्तकचिनो, लेखहरू, भिडियोहरू, र तपाईंले हालै भ्रमण गर्नु भएको पृष्ठहरूलाई राख्न प्रयोग गर्दछ, जसले गर्दा तपाइँ तिनीहरूलाई सजिलै भेटाउन सक्नुहुनेछ ।",
"welcome_label": "तपाईँका विशेषताहरु पत्ता लगाउँदै",
@ -67,7 +67,7 @@ window.gActivityStreamStrings = {
"settings_pane_snippets_header": "स्निप्पेटस्",
"settings_pane_snippets_body": "Read short and sweet updates from Mozilla about Firefox, internet culture, and the occasional random meme.",
"settings_pane_done_button": "सम्पन्न भयो",
"settings_pane_topstories_options_sponsored": "Show Sponsored Stories",
"settings_pane_topstories_options_sponsored": "प्रायोजित गरिएको कथाहरू देखाउनुहोस्",
"edit_topsites_button_text": "सम्पादन गर्नुहोस्",
"edit_topsites_button_label": "तपाईंको शीर्ष साइट खण्ड अनुकूलन गर्नुहोस्",
"edit_topsites_showmore_button": "थप देखाउनुहोस्",
@ -80,15 +80,15 @@ window.gActivityStreamStrings = {
"edit_topsites_add_button": "थप्नुहोस्",
"topsites_form_add_header": "नयाँ शीर्ष साइट",
"topsites_form_edit_header": "शीर्ष साइट सम्पादन गर्नुहोस्",
"topsites_form_title_placeholder": "Enter a title",
"topsites_form_url_placeholder": "Type or paste a URL",
"topsites_form_title_placeholder": "शीर्षक प्रविष्ट गर्नुहोस्",
"topsites_form_url_placeholder": "URL लेख्नुहोस् ",
"topsites_form_add_button": "थप्नुहोस्",
"topsites_form_save_button": "सङ्ग्रह गर्नुहोस्",
"topsites_form_cancel_button": "रद्द गर्नुहोस्",
"topsites_form_url_validation": "Valid URL required",
"pocket_read_more": "Popular Topics:",
"pocket_read_even_more": "View More Stories",
"pocket_feedback_header": "The best of the web, curated by over 25 million people.",
"topsites_form_url_validation": "मान्य URL चाहिन्छ",
"pocket_read_more": "लोकप्रिय शीर्षकहरू:",
"pocket_read_even_more": "अरू कथा देखाउनुहोस्",
"pocket_feedback_header": "वेबको सर्वोत्तम, 25 मिलियन भन्दा बढी व्यक्तिहरू द्वारा लिपिबद्ध।",
"pocket_description": "Discover high-quality content you might otherwise miss, with help from Pocket, now part of Mozilla.",
"highlights_empty_state": "Start browsing, and well show some of the great articles, videos, and other pages youve recently visited or bookmarked here.",
"topstories_empty_state": "Youve caught up. Check back later for more top stories from {provider}. Cant wait? Select a popular topic to find more great stories from around the web.",

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

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

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

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

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

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

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

@ -52,7 +52,7 @@ window.gActivityStreamStrings = {
"settings_pane_header": "Preferências de novo separador",
"settings_pane_body2": "Escolha o que vê nesta página.",
"settings_pane_search_header": "Pesquisa",
"settings_pane_search_body": "Pesquise na Web a partir do seu 'Novo separador'.",
"settings_pane_search_body": "Pesquise na Web a partir do seu novo separador.",
"settings_pane_topsites_header": "Sites mais visitados",
"settings_pane_topsites_body": "Aceda aos websites que mais visita.",
"settings_pane_topsites_options_showmore": "Mostrar duas linhas",

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

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

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

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

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

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

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

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

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

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

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

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

@ -38,9 +38,9 @@ window.gActivityStreamStrings = {
"section_info_option": "సమాచారం",
"section_info_send_feedback": "అభిప్రాయాన్ని పంపండి",
"section_info_privacy_notice": "గోప్యతా విధానం",
"section_disclaimer_topstories": "The most interesting stories on the web, selected based on what you read. From Pocket, now part of Mozilla.",
"section_disclaimer_topstories_linktext": "Learn how it works.",
"section_disclaimer_topstories_buttontext": "Okay, got it",
"section_disclaimer_topstories": "జాలంలో అత్యంత ఆసక్తికరమైన కథనాలు, మీరు చదివేవాటి ఆధారంగా ఎంచుకున్నవి. ఇప్పుడు Mozillaలో భాగమైన Pocket నుండి.",
"section_disclaimer_topstories_linktext": "ఇది ఎలా పనిచేస్తుందో తెలుసుకోండి.",
"section_disclaimer_topstories_buttontext": "సరే, అర్థమయ్యింది",
"welcome_title": "కొత్త ట్యాబుకు స్వాగతం",
"welcome_body": "సముచితమైన మీ ఇష్టాంశాలను, వ్యాసాలను, వీడియోలను, ఇంకా మీరు ఇటీవలే చూసిన పేజీలను మీకు తేలిగ్గా అందుబాటులో ఉంచేందుకు Firefox ఈ జాగాని వాడుకుంటుంది.",
"welcome_label": "మీ ముఖ్యాంశాలను గుర్తిస్తున్నది",

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

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