diff --git a/browser/base/content/test/general/browser_aboutCertError.js b/browser/base/content/test/general/browser_aboutCertError.js
index cddf659319a5..5fd74ebd1772 100644
--- a/browser/base/content/test/general/browser_aboutCertError.js
+++ b/browser/base/content/test/general/browser_aboutCertError.js
@@ -324,7 +324,7 @@ add_task(function* checkAdvancedDetailsForHSTS() {
});
isnot(message.divDisplay, "none", "Debug information is visible");
ok(message.text.includes(badStsUri.spec), "Correct URL found");
- ok(message.text.includes("requested domain name does not match the server's certificate"),
+ ok(message.text.includes("requested domain name does not match the server\u2019s certificate"),
"Correct error message found");
ok(message.text.includes("HTTP Strict Transport Security: false"),
"Correct HSTS value found");
diff --git a/browser/base/content/test/general/browser_misused_characters_in_strings.js b/browser/base/content/test/general/browser_misused_characters_in_strings.js
index 9988ba05b4c7..37753688bee6 100644
--- a/browser/base/content/test/general/browser_misused_characters_in_strings.js
+++ b/browser/base/content/test/general/browser_misused_characters_in_strings.js
@@ -1,168 +1,240 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/* This list allows pre-existing or 'unfixable' issues to remain, while we
- * detect newly occurring issues in shipping files. It is a list of objects
- * specifying conditions under which an error should be ignored.
- *
- * As each issue is found in the whitelist, it is removed from the list. At
- * the end of the test, there is an assertion that all items have been
- * removed from the whitelist, thus ensuring there are no stale entries. */
-let gWhitelist = [{
- file: "search.properties",
- key: "searchForSomethingWith",
- type: "single-quote"
- }, {
- file: "browser.dtd",
- key: "social.activated.description",
- type: "single-quote"
- }, {
- file: "netError.dtd",
- key: "certerror.introPara",
- type: "single-quote"
- }, {
- file: "netError.dtd",
- key: "weakCryptoAdvanced.longDesc",
- type: "single-quote"
- }, {
- file: "netError.dtd",
- key: "weakCryptoAdvanced.override",
- type: "single-quote"
- }, {
- file: "netError.dtd",
- key: "inadequateSecurityError.longDesc",
- type: "single-quote"
- }, {
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/* This list allows pre-existing or 'unfixable' issues to remain, while we
+ * detect newly occurring issues in shipping files. It is a list of objects
+ * specifying conditions under which an error should be ignored.
+ *
+ * As each issue is found in the whitelist, it is removed from the list. At
+ * the end of the test, there is an assertion that all items have been
+ * removed from the whitelist, thus ensuring there are no stale entries. */
+let gWhitelist = [{
+ file: "search.properties",
+ key: "searchForSomethingWith",
+ type: "single-quote"
+ }, {
+ file: "browser.dtd",
+ key: "social.activated.description",
+ type: "single-quote"
+ }, {
+ file: "netError.dtd",
+ key: "certerror.introPara",
+ type: "single-quote"
+ }, {
+ file: "netError.dtd",
+ key: "weakCryptoAdvanced.longDesc",
+ type: "single-quote"
+ }, {
+ file: "netError.dtd",
+ key: "weakCryptoAdvanced.override",
+ type: "single-quote"
+ }, {
+ file: "netError.dtd",
+ key: "inadequateSecurityError.longDesc",
+ type: "single-quote"
+ }, {
file: "netError.dtd",
key: "certerror.wrongSystemTime",
type: "single-quote"
}, {
- file: "phishing-afterload-warning-message.dtd",
- key: "safeb.blocked.malwarePage.shortDesc",
- type: "single-quote"
- }, {
- file: "phishing-afterload-warning-message.dtd",
- key: "safeb.blocked.unwantedPage.shortDesc",
- type: "single-quote"
- }, {
- file: "phishing-afterload-warning-message.dtd",
- key: "safeb.blocked.phishingPage.shortDesc2",
- type: "single-quote"
- }, {
- file: "phishing-afterload-warning-message.dtd",
- key: "safeb.blocked.forbiddenPage.shortDesc2",
- type: "single-quote"
- }
-];
-
-var moduleLocation = gTestPath.replace(/\/[^\/]*$/i, "/parsingTestHelpers.jsm");
-var {generateURIsFromDirTree} = Cu.import(moduleLocation, {});
-
-/**
- * Check if an error should be ignored due to matching one of the whitelist
- * objects defined in gWhitelist.
- *
- * @param filepath The URI spec of the locale file
- * @param key The key of the entity that is being checked
- * @param type The type of error that has been found
- * @return true if the error should be ignored, false otherwise.
- */
-function ignoredError(filepath, key, type) {
- for (let index in gWhitelist) {
- let whitelistItem = gWhitelist[index];
- if (filepath.endsWith(whitelistItem.file) &&
- key == whitelistItem.key &&
- type == whitelistItem.type) {
- gWhitelist.splice(index, 1);
- return true;
- }
- }
- return false;
-}
-
-function fetchFile(uri) {
- return new Promise((resolve, reject) => {
- let xhr = new XMLHttpRequest();
- xhr.open("GET", uri, true);
- xhr.onreadystatechange = function() {
- if (this.readyState != this.DONE) {
- return;
- }
- try {
- resolve(this.responseText);
- } catch (ex) {
- ok(false, `Script error reading ${uri}: ${ex}`);
- resolve("");
- }
- };
- xhr.onerror = error => {
- ok(false, `XHR error reading ${uri}: ${error}`);
- resolve("");
- };
- xhr.send(null);
- });
-}
-
-function testForError(filepath, key, str, pattern, type, helpText) {
- if (str.match(pattern) &&
- !ignoredError(filepath, key, type)) {
- ok(false, `${filepath} with key=${key} has a misused ${type}. ${helpText}`);
- }
-}
-
-function testForErrors(filepath, key, str) {
- testForError(filepath, key, str, /\w'\w/, "apostrophe", "Strings with apostrophes should use foo\u2019s instead of foo's.");
- testForError(filepath, key, str, /\w\u2018\w/, "incorrect-apostrophe", "Strings with apostrophes should use foo\u2019s instead of foo\u2018s.");
- testForError(filepath, key, str, /'.+'/, "single-quote", "Single-quoted strings should use Unicode \u2018foo\u2019 instead of 'foo'.");
- testForError(filepath, key, str, /"/, "double-quote", "Double-quoted strings should use Unicode \u201cfoo\u201d instead of \"foo\".");
- testForError(filepath, key, str, /\.\.\./, "ellipsis", "Strings with an ellipsis should use the Unicode \u2026 character instead of three periods.");
-}
-
-add_task(function* checkAllTheProperties() {
- let appDir = Services.dirsvc.get("XCurProcD", Ci.nsIFile);
- // This asynchronously produces a list of URLs (sadly, mostly sync on our
- // test infrastructure because it runs against jarfiles there, and
- // our zipreader APIs are all sync)
- let uris = yield generateURIsFromDirTree(appDir, [".properties"]);
- ok(uris.length, `Found ${uris.length} .properties files to scan for misused characters`);
-
- for (let uri of uris) {
- let bundle = new StringBundle(uri.spec);
- let entities = bundle.getAll();
- for (let entity of entities) {
- testForErrors(uri.spec, entity.key, entity.value);
- }
- }
-});
-
-var checkDTD = Task.async(function* (aURISpec) {
- let rawContents = yield fetchFile(aURISpec);
- // The regular expression below is adapted from:
- // https://hg.mozilla.org/mozilla-central/file/68c0b7d6f16ce5bb023e08050102b5f2fe4aacd8/python/compare-locales/compare_locales/parser.py#l233
- let entities = rawContents.match(//g);
- for (let entity of entities) {
- let [, key, str] = entity.match(//);
- // The matched string includes the enclosing quotation marks,
- // we need to slice them off.
- str = str.slice(1, -1);
- testForErrors(aURISpec, key, str);
- }
-});
-
-add_task(function* checkAllTheDTDs() {
- let appDir = Services.dirsvc.get("XCurProcD", Ci.nsIFile);
- let uris = yield generateURIsFromDirTree(appDir, [".dtd"]);
- ok(uris.length, `Found ${uris.length} .dtd files to scan for misused characters`);
- for (let uri of uris) {
- yield checkDTD(uri.spec);
- }
-
- // This support DTD file supplies a string with a newline to make sure
- // the regex in checkDTD works correctly for that case.
- let dtdLocation = gTestPath.replace(/\/[^\/]*$/i, "/bug1262648_string_with_newlines.dtd");
- yield checkDTD(dtdLocation);
-});
-
-add_task(function* ensureWhiteListIsEmpty() {
- is(gWhitelist.length, 0, "No remaining whitelist entries exist");
-});
+ file: "phishing-afterload-warning-message.dtd",
+ key: "safeb.blocked.malwarePage.shortDesc",
+ type: "single-quote"
+ }, {
+ file: "phishing-afterload-warning-message.dtd",
+ key: "safeb.blocked.unwantedPage.shortDesc",
+ type: "single-quote"
+ }, {
+ file: "phishing-afterload-warning-message.dtd",
+ key: "safeb.blocked.phishingPage.shortDesc2",
+ type: "single-quote"
+ }, {
+ file: "phishing-afterload-warning-message.dtd",
+ key: "safeb.blocked.forbiddenPage.shortDesc2",
+ type: "single-quote"
+ }, {
+ file: "mathfont.properties",
+ key: "operator.\\u002E\\u002E\\u002E.postfix",
+ type: "ellipsis"
+ }, {
+ file: "layout_errors.properties",
+ key: "ImageMapRectBoundsError",
+ type: "double-quote"
+ }, {
+ file: "layout_errors.properties",
+ key: "ImageMapCircleWrongNumberOfCoords",
+ type: "double-quote"
+ }, {
+ file: "layout_errors.properties",
+ key: "ImageMapCircleNegativeRadius",
+ type: "double-quote"
+ }, {
+ file: "layout_errors.properties",
+ key: "ImageMapPolyWrongNumberOfCoords",
+ type: "double-quote"
+ }, {
+ file: "layout_errors.properties",
+ key: "ImageMapPolyOddNumberOfCoords",
+ type: "double-quote"
+ }, {
+ file: "xbl.properties",
+ key: "CommandNotInChrome",
+ type: "double-quote"
+ }, {
+ file: "dom.properties",
+ key: "PatternAttributeCompileFailure",
+ type: "single-quote"
+ }, {
+ file: "pipnss.properties",
+ key: "certErrorMismatchSingle2",
+ type: "double-quote"
+ }, {
+ file: "pipnss.properties",
+ key: "certErrorCodePrefix2",
+ type: "double-quote"
+ }, {
+ file: "aboutSupport.dtd",
+ key: "aboutSupport.pageSubtitle",
+ type: "single-quote"
+ }, {
+ file: "aboutSupport.dtd",
+ key: "aboutSupport.userJSDescription",
+ type: "single-quote"
+ }, {
+ file: "netError.dtd",
+ key: "inadequateSecurityError.longDesc",
+ type: "single-quote"
+ }, {
+ file: "netErrorApp.dtd",
+ key: "securityOverride.warningContent",
+ type: "single-quote"
+ }
+];
+
+var moduleLocation = gTestPath.replace(/\/[^\/]*$/i, "/parsingTestHelpers.jsm");
+var {generateURIsFromDirTree} = Cu.import(moduleLocation, {});
+
+/**
+ * Check if an error should be ignored due to matching one of the whitelist
+ * objects defined in gWhitelist.
+ *
+ * @param filepath The URI spec of the locale file
+ * @param key The key of the entity that is being checked
+ * @param type The type of error that has been found
+ * @return true if the error should be ignored, false otherwise.
+ */
+function ignoredError(filepath, key, type) {
+ for (let index in gWhitelist) {
+ let whitelistItem = gWhitelist[index];
+ if (filepath.endsWith(whitelistItem.file) &&
+ key == whitelistItem.key &&
+ type == whitelistItem.type) {
+ gWhitelist.splice(index, 1);
+ return true;
+ }
+ }
+ return false;
+}
+
+function fetchFile(uri) {
+ return new Promise((resolve, reject) => {
+ let xhr = new XMLHttpRequest();
+ xhr.open("GET", uri, true);
+ xhr.onreadystatechange = function() {
+ if (this.readyState != this.DONE) {
+ return;
+ }
+ try {
+ resolve(this.responseText);
+ } catch (ex) {
+ ok(false, `Script error reading ${uri}: ${ex}`);
+ resolve("");
+ }
+ };
+ xhr.onerror = error => {
+ ok(false, `XHR error reading ${uri}: ${error}`);
+ resolve("");
+ };
+ xhr.send(null);
+ });
+}
+
+function testForError(filepath, key, str, pattern, type, helpText) {
+ if (str.match(pattern) &&
+ !ignoredError(filepath, key, type)) {
+ ok(false, `${filepath} with key=${key} has a misused ${type}. ${helpText}`);
+ }
+}
+
+function testForErrors(filepath, key, str) {
+ testForError(filepath, key, str, /\w'\w/, "apostrophe", "Strings with apostrophes should use foo\u2019s instead of foo's.");
+ testForError(filepath, key, str, /\w\u2018\w/, "incorrect-apostrophe", "Strings with apostrophes should use foo\u2019s instead of foo\u2018s.");
+ testForError(filepath, key, str, /'.+'/, "single-quote", "Single-quoted strings should use Unicode \u2018foo\u2019 instead of 'foo'.");
+ testForError(filepath, key, str, /"/, "double-quote", "Double-quoted strings should use Unicode \u201cfoo\u201d instead of \"foo\".");
+ testForError(filepath, key, str, /\.\.\./, "ellipsis", "Strings with an ellipsis should use the Unicode \u2026 character instead of three periods.");
+}
+
+function* getAllTheFiles(extension) {
+ let appDirGreD = Services.dirsvc.get("GreD", Ci.nsIFile);
+ let appDirXCurProcD = Services.dirsvc.get("XCurProcD", Ci.nsIFile);
+ if (appDirGreD.contains(appDirXCurProcD)) {
+ return yield generateURIsFromDirTree(appDirGreD, [extension]);
+ }
+ if (appDirXCurProcD.contains(appDirGreD)) {
+ return yield generateURIsFromDirTree(appDirXCurProcD, [extension]);
+ }
+ let urisGreD = yield generateURIsFromDirTree(appDirGreD, [extension]);
+ let urisXCurProcD = yield generateURIsFromDirTree(appDirXCurProcD, [extension]);
+ return Array.from(new Set(urisGreD.concat(appDirXCurProcD)));
+}
+
+add_task(function* checkAllTheProperties() {
+ // This asynchronously produces a list of URLs (sadly, mostly sync on our
+ // test infrastructure because it runs against jarfiles there, and
+ // our zipreader APIs are all sync)
+ let uris = yield getAllTheFiles(".properties");
+ ok(uris.length, `Found ${uris.length} .properties files to scan for misused characters`);
+
+ for (let uri of uris) {
+ let bundle = new StringBundle(uri.spec);
+ let entities = bundle.getAll();
+ for (let entity of entities) {
+ testForErrors(uri.spec, entity.key, entity.value);
+ }
+ }
+});
+
+var checkDTD = Task.async(function* (aURISpec) {
+ let rawContents = yield fetchFile(aURISpec);
+ // The regular expression below is adapted from:
+ // https://hg.mozilla.org/mozilla-central/file/68c0b7d6f16ce5bb023e08050102b5f2fe4aacd8/python/compare-locales/compare_locales/parser.py#l233
+ let entities = rawContents.match(//g);
+ if (!entities) {
+ // Some files, such as requestAutocomplete.dtd, have no entities defined.
+ return;
+ }
+ for (let entity of entities) {
+ let [, key, str] = entity.match(//);
+ // The matched string includes the enclosing quotation marks,
+ // we need to slice them off.
+ str = str.slice(1, -1);
+ testForErrors(aURISpec, key, str);
+ }
+});
+
+add_task(function* checkAllTheDTDs() {
+ let uris = yield getAllTheFiles(".dtd");
+ ok(uris.length, `Found ${uris.length} .dtd files to scan for misused characters`);
+ for (let uri of uris) {
+ yield checkDTD(uri.spec);
+ }
+
+ // This support DTD file supplies a string with a newline to make sure
+ // the regex in checkDTD works correctly for that case.
+ let dtdLocation = gTestPath.replace(/\/[^\/]*$/i, "/bug1262648_string_with_newlines.dtd");
+ yield checkDTD(dtdLocation);
+});
+
+add_task(function* ensureWhiteListIsEmpty() {
+ is(gWhitelist.length, 0, "No remaining whitelist entries exist");
+});
diff --git a/devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js b/devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js
index 3235c463d7d1..84af95172863 100644
--- a/devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js
+++ b/devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js
@@ -8,8 +8,8 @@
"use strict";
-const EXPECTED_RESULT = "Not supporting directive 'reflected-xss'. Directive " +
- "and values will be ignored.";
+const EXPECTED_RESULT = "Not supporting directive \u2018reflected-xss\u2019. " +
+ "Directive and values will be ignored.";
const TEST_FILE = "http://example.com/browser/devtools/client/webconsole/" +
"test/test_bug1045902_console_csp_ignore_reflected_xss_" +
"message.html";
@@ -40,13 +40,13 @@ function testViolationMessage() {
let aOutputNode = hud.outputNode;
return waitForSuccess({
- name: "Confirming that CSP logs messages to the console when " +
- "'reflected-xss' directive is used!",
- validator: function() {
- console.log(aOutputNode.textContent);
- let success = false;
- success = aOutputNode.textContent.indexOf(EXPECTED_RESULT) > -1;
- return success;
- }
- });
+ name: "Confirming that CSP logs messages to the console when " +
+ "\u2018reflected-xss\u2019 directive is used!",
+ validator: function() {
+ console.log(aOutputNode.textContent);
+ let success = false;
+ success = aOutputNode.textContent.indexOf(EXPECTED_RESULT) > -1;
+ return success;
+ }
+ });
}
diff --git a/devtools/client/webconsole/test/browser_console_error_source_click.js b/devtools/client/webconsole/test/browser_console_error_source_click.js
index b3596549f9fa..b00e493b8d4e 100644
--- a/devtools/client/webconsole/test/browser_console_error_source_click.js
+++ b/devtools/client/webconsole/test/browser_console_error_source_click.js
@@ -43,7 +43,7 @@ function test() {
severity: SEVERITY_ERROR,
},
{
- text: "Unknown property 'test-color'",
+ text: "Unknown property \u2018test-color\u2019",
category: CATEGORY_CSS,
severity: SEVERITY_WARNING,
},
diff --git a/devtools/client/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js b/devtools/client/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js
index 0b60d6d47d58..bb49398cf66c 100644
--- a/devtools/client/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js
+++ b/devtools/client/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js
@@ -31,7 +31,7 @@ add_task(function* () {
{
name: "Logged mixed active content",
text: "Loading mixed (insecure) active content " +
- "\"http://example.com/\" on a secure page",
+ "\u201chttp://example.com/\u201d on a secure page",
category: CATEGORY_SECURITY,
severity: SEVERITY_WARNING,
objects: true,
@@ -39,7 +39,7 @@ add_task(function* () {
{
name: "Logged mixed passive content - image",
text: "Loading mixed (insecure) display content " +
- "\"http://example.com/tests/image/test/mochitest/blue.png\" " +
+ "\u201chttp://example.com/tests/image/test/mochitest/blue.png\u201d " +
"on a secure page",
category: CATEGORY_SECURITY,
severity: SEVERITY_WARNING,
diff --git a/devtools/client/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js b/devtools/client/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js
index 0d1abeb068fb..35017ebe0f4f 100644
--- a/devtools/client/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js
+++ b/devtools/client/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js
@@ -33,14 +33,14 @@ add_task(function* () {
messages: [
{
name: "Logged blocking mixed active content",
- text: "Blocked loading mixed active content \"http://example.com/\"",
+ text: "Blocked loading mixed active content \u201chttp://example.com/\u201d",
category: CATEGORY_SECURITY,
severity: SEVERITY_ERROR,
objects: true,
},
{
name: "Logged blocking mixed passive content - image",
- text: "Blocked loading mixed active content \"http://example.com/\"",
+ text: "Blocked loading mixed active content \u201chttp://example.com/\u201d",
category: CATEGORY_SECURITY,
severity: SEVERITY_ERROR,
objects: true,
@@ -78,7 +78,7 @@ function mixedContentOverrideTest2(hud, browser) {
{
name: "Logged blocking mixed active content",
text: "Loading mixed (insecure) active content " +
- "\"http://example.com/\" on a secure page",
+ "\u201chttp://example.com/\u201d on a secure page",
category: CATEGORY_SECURITY,
severity: SEVERITY_WARNING,
objects: true,
@@ -86,7 +86,7 @@ function mixedContentOverrideTest2(hud, browser) {
{
name: "Logged blocking mixed passive content - image",
text: "Loading mixed (insecure) display content" +
- " \"http://example.com/tests/image/test/mochitest/blue.png\"" +
+ " \u201chttp://example.com/tests/image/test/mochitest/blue.png\u201d" +
" on a secure page",
category: CATEGORY_SECURITY,
severity: SEVERITY_WARNING,
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_1010953_cspro.js b/devtools/client/webconsole/test/browser_webconsole_bug_1010953_cspro.js
index c910d4db926c..d5e3132193c6 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_1010953_cspro.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_1010953_cspro.js
@@ -20,14 +20,14 @@ const TEST_URI = "data:text/html;charset=utf8,Web Console CSP report only " +
"test (bug 1010953)";
const TEST_VIOLATION = "http://example.com/browser/devtools/client/" +
"webconsole/test/test_bug_1010953_cspro.html";
-const CSP_VIOLATION_MSG = "Content Security Policy: The page's settings " +
+const CSP_VIOLATION_MSG = "Content Security Policy: The page\u2019s settings " +
"blocked the loading of a resource at " +
"http://some.example.com/test.png " +
- "(\"img-src http://example.com\").";
-const CSP_REPORT_MSG = "Content Security Policy: The page\'s settings " +
+ "(\u201cimg-src http://example.com\u201d).";
+const CSP_REPORT_MSG = "Content Security Policy: The page\u2019s settings " +
"observed the loading of a resource at " +
"http://some.example.com/test_bug_1010953_cspro.js " +
- "(\"script-src http://example.com\"). A CSP report is " +
+ "(\u201cscript-src http://example.com\u201d). A CSP report is " +
"being sent.";
add_task(function* () {
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_611795.js b/devtools/client/webconsole/test/browser_webconsole_bug_611795.js
index 271ac8170514..f7855e3e3c02 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_611795.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_611795.js
@@ -31,7 +31,7 @@ add_task(function* () {
});
function onContentLoaded() {
- let cssWarning = "Unknown property '-moz-opacity'. Declaration dropped.";
+ let cssWarning = "Unknown property \u2018-moz-opacity\u2019. Declaration dropped.";
return waitForMessages({
webconsole: hud,
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js b/devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js
index 7c39374f881e..ffeb8ce39aa5 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js
@@ -224,9 +224,9 @@ function testCssLimits2() {
severity: SEVERITY_WARNING,
}],
}).then(() => {
- testLogEntry(outputNode, "Unknown property '-moz-foobar0'",
+ testLogEntry(outputNode, "Unknown property \u2018-moz-foobar0\u2019",
"first message is pruned", false, true);
- findLogEntry("Unknown property '-moz-foobar1'");
+ findLogEntry("Unknown property \u2018-moz-foobar1\u2019");
// Check if the sentinel entry is still there.
findLogEntry("testing CSS limits");
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_770099_violation.js b/devtools/client/webconsole/test/browser_webconsole_bug_770099_violation.js
index 2718b4e2ff02..d40bc2d0d495 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_770099_violation.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_770099_violation.js
@@ -10,10 +10,10 @@
const TEST_URI = "data:text/html;charset=utf8,Web Console CSP violation test";
const TEST_VIOLATION = "https://example.com/browser/devtools/client/" +
"webconsole/test/test_bug_770099_violation.html";
-const CSP_VIOLATION_MSG = "Content Security Policy: The page's settings " +
+const CSP_VIOLATION_MSG = "Content Security Policy: The page\u2019s settings " +
"blocked the loading of a resource at " +
- "http://some.example.com/test.png (\"default-src " +
- "https://example.com\").";
+ "http://some.example.com/test.png (\u201cdefault-src " +
+ "https://example.com\u201d).";
add_task(function* () {
let { browser } = yield loadTab(TEST_URI);
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js b/devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js
index a9196a0e9a8c..907d1aea7abf 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js
@@ -27,12 +27,12 @@ function testViewSource() {
waitForMessages({
webconsole: hud,
messages: [{
- text: "'font-weight'",
+ text: "\u2018font-weight\u2019",
category: CATEGORY_CSS,
severity: SEVERITY_WARNING,
},
{
- text: "'color'",
+ text: "\u2018color\u2019",
category: CATEGORY_CSS,
severity: SEVERITY_WARNING,
}],
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_837351_securityerrors.js b/devtools/client/webconsole/test/browser_webconsole_bug_837351_securityerrors.js
index 538f455b7a8b..0524e1c4cfbf 100644
--- a/devtools/client/webconsole/test/browser_webconsole_bug_837351_securityerrors.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_837351_securityerrors.js
@@ -23,7 +23,7 @@ add_task(function* () {
messages: [
{
name: "Logged blocking mixed active content",
- text: "Blocked loading mixed active content \"http://example.com/\"",
+ text: "Blocked loading mixed active content \u201chttp://example.com/\u201d",
category: CATEGORY_SECURITY,
severity: SEVERITY_ERROR
},
diff --git a/devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js b/devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js
index 9f09927ed847..b5a9aaf43a84 100644
--- a/devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js
+++ b/devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js
@@ -37,42 +37,42 @@ add_task(function* () {
url: SJS_URL + "?noMaxAge",
name: "No max-age error displayed successfully",
text: "Public-Key-Pins: The site specified a header that did not include " +
- "a 'max-age' directive."
+ "a \u2018max-age\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?invalidIncludeSubDomains",
name: "Invalid includeSubDomains error displayed successfully",
text: "Public-Key-Pins: The site specified a header that included an " +
- "invalid 'includeSubDomains' directive."
+ "invalid \u2018includeSubDomains\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?invalidMaxAge",
name: "Invalid max-age error displayed successfully",
text: "Public-Key-Pins: The site specified a header that included an " +
- "invalid 'max-age' directive."
+ "invalid \u2018max-age\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?multipleIncludeSubDomains",
name: "Multiple includeSubDomains error displayed successfully",
text: "Public-Key-Pins: The site specified a header that included " +
- "multiple 'includeSubDomains' directives."
+ "multiple \u2018includeSubDomains\u2019 directives."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?multipleMaxAge",
name: "Multiple max-age error displayed successfully",
text: "Public-Key-Pins: The site specified a header that included " +
- "multiple 'max-age' directives."
+ "multiple \u2018max-age\u2019 directives."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?multipleReportURIs",
name: "Multiple report-uri error displayed successfully",
text: "Public-Key-Pins: The site specified a header that included " +
- "multiple 'report-uri' directives."
+ "multiple \u2018report-uri\u2019 directives."
}, hud);
// The root used for mochitests is not built-in, so set the relevant pref to
diff --git a/devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js b/devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js
index 5552deb3600d..2b3f8c702f80 100644
--- a/devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js
+++ b/devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js
@@ -31,35 +31,35 @@ add_task(function* () {
url: SJS_URL + "?noMaxAge",
name: "No max-age error displayed successfully",
text: "Strict-Transport-Security: The site specified a header that did " +
- "not include a 'max-age' directive."
+ "not include a \u2018max-age\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?invalidIncludeSubDomains",
name: "Invalid includeSubDomains error displayed successfully",
text: "Strict-Transport-Security: The site specified a header that " +
- "included an invalid 'includeSubDomains' directive."
+ "included an invalid \u2018includeSubDomains\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?invalidMaxAge",
name: "Invalid max-age error displayed successfully",
text: "Strict-Transport-Security: The site specified a header that " +
- "included an invalid 'max-age' directive."
+ "included an invalid \u2018max-age\u2019 directive."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?multipleIncludeSubDomains",
name: "Multiple includeSubDomains error displayed successfully",
text: "Strict-Transport-Security: The site specified a header that " +
- "included multiple 'includeSubDomains' directives."
+ "included multiple \u2018includeSubDomains\u2019 directives."
}, hud);
yield* checkForMessage({
url: SJS_URL + "?multipleMaxAge",
name: "Multiple max-age error displayed successfully",
text: "Strict-Transport-Security: The site specified a header that " +
- "included multiple 'max-age' directives."
+ "included multiple \u2018max-age\u2019 directives."
}, hud);
});
diff --git a/devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js b/devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js
index e8dbac85a3bf..42fb4393c534 100644
--- a/devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js
+++ b/devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js
@@ -31,7 +31,7 @@ add_task(function* testMessagesAppear() {
messages: [
{
name: "Was blocked because tracking protection is enabled",
- text: "The resource at \"http://tracking.example.com/\" was blocked because tracking protection is enabled",
+ text: "The resource at \u201chttp://tracking.example.com/\u201d was blocked because tracking protection is enabled",
category: CATEGORY_SECURITY,
severity: SEVERITY_WARNING,
objects: true,
diff --git a/devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html b/devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html
index 4872a1df766f..bf63601bf32e 100644
--- a/devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html
+++ b/devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html
@@ -2,9 +2,9 @@
- Bug 1045902 - CSP: Log console message for 'reflected-xss'
+ Bug 1045902 - CSP: Log console message for ‘reflected-xss’
-Bug 1045902 - CSP: Log console message for 'reflected-xss'
+Bug 1045902 - CSP: Log console message for ‘reflected-xss’
diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties
index 2842e2faab58..17279ada0a2b 100644
--- a/dom/locales/en-US/chrome/dom/dom.properties
+++ b/dom/locales/en-US/chrome/dom/dom.properties
@@ -9,7 +9,7 @@ KillScriptLocation=Script: %S
StopScriptButton=Stop script
DebugScriptButton=Debug script
WaitForScriptButton=Continue
-DontAskAgain=&Don't ask me again
+DontAskAgain=&Don’t ask me again
JSURLLoadBlockedWarning=Attempt to load a javascript: URL from one host\nin a window displaying content from another host\nwas blocked by the security manager.
WindowCloseBlockedWarning=Scripts may not close windows that were not opened by script.
OnBeforeUnloadTitle=Are you sure?
@@ -57,8 +57,8 @@ SetAttributeNodeNSWarning=Use of setAttributeNodeNS() is deprecated. Use setAttr
RemoveAttributeNodeWarning=Use of removeAttributeNode() is deprecated. Use removeAttribute() instead.
CreateAttributeWarning=Use of document.createAttribute() is deprecated. Use element.setAttribute() instead.
CreateAttributeNSWarning=Use of document.createAttributeNS() is deprecated. Use element.setAttributeNS() instead.
-NodeValueWarning=Use of attributes' nodeValue attribute is deprecated. Use value instead.
-TextContentWarning=Use of attributes' textContent attribute is deprecated. Use value instead.
+NodeValueWarning=Use of attributes’ nodeValue attribute is deprecated. Use value instead.
+TextContentWarning=Use of attributes’ textContent attribute is deprecated. Use value instead.
EnablePrivilegeWarning=Use of enablePrivilege is deprecated. Please use code that runs with the system principal (e.g. an extension) instead.
nsIJSONDecodeDeprecatedWarning=nsIJSON.decode is deprecated. Please use JSON.parse instead.
nsIJSONEncodeDeprecatedWarning=nsIJSON.encode is deprecated. Please use JSON.stringify instead.
@@ -66,7 +66,7 @@ nsIDOMWindowInternalWarning=Use of nsIDOMWindowInternal is deprecated. Use nsIDO
FullscreenDeniedDisabled=Request for fullscreen was denied because Fullscreen API is disabled by user preference.
FullscreenDeniedFocusedPlugin=Request for fullscreen was denied because a windowed plugin is focused.
FullscreenDeniedHidden=Request for fullscreen was denied because the document is no longer visible.
-FullscreenDeniedContainerNotAllowed=Request for fullscreen was denied because at least one of the document's containing elements is not an iframe or does not have an "allowfullscreen" attribute.
+FullscreenDeniedContainerNotAllowed=Request for fullscreen was denied because at least one of the document’s containing elements is not an iframe or does not have an “allowfullscreen” attribute.
FullscreenDeniedNotInputDriven=Request for fullscreen was denied because Element.requestFullscreen() was not called from inside a short running user-generated event handler.
FullscreenDeniedNotInDocument=Request for fullscreen was denied because requesting element is no longer in its document.
FullscreenDeniedMovedDocument=Request for fullscreen was denied because requesting element has moved document.
@@ -77,10 +77,10 @@ FullscreenDeniedNotFocusedTab=Request for fullscreen was denied because requesti
RemovedFullscreenElement=Exited fullscreen because fullscreen element was removed from document.
FocusedWindowedPluginWhileFullscreen=Exited fullscreen because windowed plugin was focused.
HTMLSyncXHRWarning=HTML parsing in XMLHttpRequest is not supported in the synchronous mode.
-InvalidRedirectChannelWarning=Unable to redirect to %S because the channel doesn't implement nsIWritablePropertyBag2.
-ResponseTypeSyncXHRWarning=Use of XMLHttpRequest's responseType attribute is no longer supported in the synchronous mode in window context.
-WithCredentialsSyncXHRWarning=Use of XMLHttpRequest's withCredentials attribute is no longer supported in the synchronous mode in window context.
-TimeoutSyncXHRWarning=Use of XMLHttpRequest's timeout attribute is not supported in the synchronous mode in window context.
+InvalidRedirectChannelWarning=Unable to redirect to %S because the channel doesn’t implement nsIWritablePropertyBag2.
+ResponseTypeSyncXHRWarning=Use of XMLHttpRequest’s responseType attribute is no longer supported in the synchronous mode in window context.
+WithCredentialsSyncXHRWarning=Use of XMLHttpRequest’s withCredentials attribute is no longer supported in the synchronous mode in window context.
+TimeoutSyncXHRWarning=Use of XMLHttpRequest’s timeout attribute is not supported in the synchronous mode in window context.
JSONCharsetWarning=An attempt was made to declare a non-UTF-8 encoding for JSON retrieved using XMLHttpRequest. Only UTF-8 is supported for decoding JSON.
# LOCALIZATION NOTE: Do not translate AudioBufferSourceNode
MediaBufferSourceNodeResampleOutOfMemory=Insufficient memory to resample the AudioBufferSourceNode for playback.
@@ -97,24 +97,24 @@ MediaElementAudioSourceNodeCrossOrigin=The HTMLMediaElement passed to createMedi
# LOCALIZATION NOTE: Do not translate MediaStream and createMediaStreamSource.
MediaStreamAudioSourceNodeCrossOrigin=The MediaStream passed to createMediaStreamSource has a cross-origin resource, the node it will output silence.
MediaLoadExhaustedCandidates=All candidate resources failed to load. Media load paused.
-MediaLoadSourceMissingSrc= element has no "src" attribute. Media resource load failed.
+MediaLoadSourceMissingSrc= element has no “src” attribute. Media resource load failed.
# LOCALIZATION NOTE: %1$S is the Http error code the server returned (e.g. 404, 500, etc), %2$S is the URL of the media resource which failed to load.
MediaLoadHttpError=HTTP load failed with status %1$S. Load of media resource %2$S failed.
# LOCALIZATION NOTE: %S is the URL of the media resource which failed to load.
MediaLoadInvalidURI=Invalid URI. Load of media resource %S failed.
# LOCALIZATION NOTE: %1$S is the media resource's format/codec type (basically equivalent to the file type, e.g. MP4,AVI,WMV,MOV etc), %2$S is the URL of the media resource which failed to load.
-MediaLoadUnsupportedTypeAttribute=Specified "type" attribute of "%1$S" is not supported. Load of media resource %2$S failed.
+MediaLoadUnsupportedTypeAttribute=Specified “type” attribute of “%1$S” is not supported. Load of media resource %2$S failed.
# LOCALIZATION NOTE: %1$S is the "media" attribute value of the element. It is a media query. %2$S is the URL of the media resource which failed to load.
-MediaLoadSourceMediaNotMatched=Specified "media" attribute of "%1$S" does not match the environment. Load of media resource %2$S failed.
+MediaLoadSourceMediaNotMatched=Specified “media” attribute of “%1$S” does not match the environment. Load of media resource %2$S failed.
# LOCALIZATION NOTE: %1$S is the MIME type HTTP header being sent by the web server, %2$S is the URL of the media resource which failed to load.
-MediaLoadUnsupportedMimeType=HTTP "Content-Type" of "%1$S" is not supported. Load of media resource %2$S failed.
+MediaLoadUnsupportedMimeType=HTTP “Content-Type” of “%1$S” is not supported. Load of media resource %2$S failed.
# LOCALIZATION NOTE: %S is the URL of the media resource which failed to load because of error in decoding.
MediaLoadDecodeError=Media resource %S could not be decoded.
MediaWidevineNoWMFNoSilverlight=Trying to play Widevine with no Windows Media Foundation (nor Silverlight fallback), see https://support.mozilla.org/kb/fix-video-audio-problems-firefox-windows
# LOCALIZATION NOTE: %S is a comma-separated list of codecs (e.g. 'video/mp4, video/webm')
MediaWMFNeeded=To play video formats %S, you need to install extra Microsoft software, see https://support.mozilla.org/kb/fix-video-audio-problems-firefox-windows
# LOCALIZATION NOTE: %S is a comma-separated list of codecs (e.g. 'video/mp4, video/webm')
-MediaPlatformDecoderNotFound=The video on this page can't be played. Your system may not have the required video codecs for: %S
+MediaPlatformDecoderNotFound=The video on this page can’t be played. Your system may not have the required video codecs for: %S
# LOCALIZATION NOTE: %S is a comma-separated list of codecs (e.g. 'video/mp4, video/webm')
MediaCannotPlayNoDecoders=Cannot play media. No decoders for requested formats: %S
# LOCALIZATION NOTE: %S is a comma-separated list of codecs (e.g. 'video/mp4, video/webm')
@@ -126,7 +126,7 @@ MediaStreamAddTrackDifferentAudioChannel=MediaStreamTrack %S could not be added
# LOCALIZATION NOTE: Do not translate "MediaStream", "stop()" and "MediaStreamTrack"
MediaStreamStopDeprecatedWarning=MediaStream.stop() is deprecated and will soon be removed. Use MediaStreamTrack.stop() instead.
# LOCALIZATION NOTE: Do not translate "DOMException", "code" and "name"
-DOMExceptionCodeWarning=Use of DOMException's code attribute is deprecated. Use name instead.
+DOMExceptionCodeWarning=Use of DOMException’s code attribute is deprecated. Use name instead.
# LOCALIZATION NOTE: Do not translate "__exposedProps__"
NoExposedPropsWarning=Exposing chrome JS objects to content without __exposedProps__ is insecure and deprecated. See https://developer.mozilla.org/en/XPConnect_wrappers for more information.
# LOCALIZATION NOTE: Do not translate "Mutation Event" and "MutationObserver"
@@ -139,11 +139,11 @@ PluginHangUIWaitButton=Continue
PluginHangUIStopButton=Stop plugin
PrefixedFullscreenAPIWarning=Prefixed Fullscreen API is deprecated. Please use unprefixed API for fullscreen. For more help https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API
# LOCALIZATION NOTE: Do not translate "mozHidden", "mozVisibilityState", "hidden", or "visibilityState"
-PrefixedVisibilityAPIWarning='mozHidden' and 'mozVisibilityState' are deprecated. Please use the unprefixed 'hidden' and 'visibilityState' instead.
+PrefixedVisibilityAPIWarning=‘mozHidden’ and ‘mozVisibilityState’ are deprecated. Please use the unprefixed ‘hidden’ and ‘visibilityState’ instead.
# LOCALIZATION NOTE: Do not translate "NodeIterator" or "detach()".
NodeIteratorDetachWarning=Calling detach() on a NodeIterator no longer has an effect.
# LOCALIZATION NOTE: Do not translate "LenientThis" and "this"
-LenientThisWarning=Ignoring get or set of property that has [LenientThis] because the "this" object is incorrect.
+LenientThisWarning=Ignoring get or set of property that has [LenientThis] because the “this” object is incorrect.
# LOCALIZATION NOTE: Do not translate "nsIDOMWindowUtils", "getWindowWithOuterId", or "nsIWindowMediator"
GetWindowWithOuterIdWarning=Use of nsIDOMWindowUtils.getOuterWindowWithId() is deprecated. Instead, use the nsIWindowMediator method of the same name.
# LOCALIZATION NOTE: Do not translate "getPreventDefault" or "defaultPrevented".
@@ -163,7 +163,7 @@ ShowModalDialogWarning=Use of window.showModalDialog() is deprecated. Use window
# LOCALIZATION NOTE: Do not translate "window._content" or "window.content"
Window_ContentWarning=window._content is deprecated. Please use window.content instead.
# LOCALIZATION NOTE: Do not translate "XMLHttpRequest"
-SyncXMLHttpRequestWarning=Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help http://xhr.spec.whatwg.org/
+SyncXMLHttpRequestWarning=Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/
ImplicitMetaViewportTagFallback=No meta-viewport tag found. Please explicitly specify one to prevent unexpected behavioural changes in future versions. For more help https://developer.mozilla.org/en/docs/Mozilla/Mobile/Viewport_meta_tag
# LOCALIZATION NOTE: Do not translate "DataContainerEvent" or "CustomEvent"
DataContainerEventWarning=Use of DataContainerEvent is deprecated. Use CustomEvent instead.
@@ -183,27 +183,27 @@ PannerNodeDopplerWarning=Use of setVelocity on the PannerNode and AudioListener,
AppCacheWarning=The Application Cache API (AppCache) is deprecated and will be removed at a future date. Please consider using ServiceWorker for offline support.
# LOCALIZATION NOTE: Do not translate "Worker".
EmptyWorkerSourceWarning=Attempting to create a Worker from an empty source. This is probably unintentional.
-WebrtcDeprecatedPrefixWarning=WebRTC interfaces with the "moz" prefix (mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate) have been deprecated.
+WebrtcDeprecatedPrefixWarning=WebRTC interfaces with the “moz” prefix (mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate) have been deprecated.
NavigatorGetUserMediaWarning=navigator.mozGetUserMedia has been replaced by navigator.mediaDevices.getUserMedia
# LOCALIZATION NOTE: Do not translate "ServiceWorker". %S is a URL.
-InterceptionFailedWithURL=Failed to load '%S'. A ServiceWorker intercepted the request and encountered an unexpected error.
+InterceptionFailedWithURL=Failed to load ‘%S’. A ServiceWorker intercepted the request and encountered an unexpected error.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "FetchEvent.respondWith()", "FetchEvent", "no-cors", "opaque", "Response", or "RequestMode". %1$S is a URL. %2$S is a RequestMode value.
-BadOpaqueInterceptionRequestModeWithURL=Failed to load '%1$S'. A ServiceWorker passed an opaque Response to FetchEvent.respondWith() while handling a '%2$S' FetchEvent. Opaque Response objects are only valid when the RequestMode is 'no-cors'.
+BadOpaqueInterceptionRequestModeWithURL=Failed to load ‘%1$S’. A ServiceWorker passed an opaque Response to FetchEvent.respondWith() while handling a ‘%2$S’ FetchEvent. Opaque Response objects are only valid when the RequestMode is ‘no-cors’.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "Error", "Response", "FetchEvent.respondWith()", or "fetch()". %S is a URL.
-InterceptedErrorResponseWithURL=Failed to load '%S'. A ServiceWorker passed an Error Response to FetchEvent.respondWith(). This typically means the ServiceWorker performed an invalid fetch() call.
+InterceptedErrorResponseWithURL=Failed to load ‘%S’. A ServiceWorker passed an Error Response to FetchEvent.respondWith(). This typically means the ServiceWorker performed an invalid fetch() call.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "Response", "FetchEvent.respondWith()", or "Response.clone()". %S is a URL.
-InterceptedUsedResponseWithURL=Failed to load '%S'. A ServiceWorker passed a used Response to FetchEvent.respondWith(). The body of a Response may only be read once. Use Response.clone() to access the body multiple times.
+InterceptedUsedResponseWithURL=Failed to load ‘%S’. A ServiceWorker passed a used Response to FetchEvent.respondWith(). The body of a Response may only be read once. Use Response.clone() to access the body multiple times.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "opaqueredirect", "Response", "FetchEvent.respondWith()", or "FetchEvent". %s is a URL.
-BadOpaqueRedirectInterceptionWithURL=Failed to load '%S'. A ServiceWorker passed an opaqueredirect Response to FetchEvent.respondWith() while handling a non-navigation FetchEvent.
+BadOpaqueRedirectInterceptionWithURL=Failed to load ‘%S’. A ServiceWorker passed an opaqueredirect Response to FetchEvent.respondWith() while handling a non-navigation FetchEvent.
# LOCALIZATION NOTE: Do not translate "ServiceWorker" or "FetchEvent.preventDefault()". %S is a URL.
-InterceptionCanceledWithURL=Failed to load '%S'. A ServiceWorker canceled the load by calling FetchEvent.preventDefault().
+InterceptionCanceledWithURL=Failed to load ‘%S’. A ServiceWorker canceled the load by calling FetchEvent.preventDefault().
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "promise", or "FetchEvent.respondWith()". %1$S is a URL. %2$S is an error string.
-InterceptionRejectedResponseWithURL=Failed to load '%1$S'. A ServiceWorker passed a promise to FetchEvent.respondWith() that rejected with '%2$S'.
+InterceptionRejectedResponseWithURL=Failed to load ‘%1$S’. A ServiceWorker passed a promise to FetchEvent.respondWith() that rejected with ‘%2$S’.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "promise", "FetchEvent.respondWith()", or "Response". %1$S is a URL. %2$S is an error string.
-InterceptedNonResponseWithURL=Failed to load '%1$S'. A ServiceWorker passed a promise to FetchEvent.respondWith() that resolved with non-Response value '%2$S'.
+InterceptedNonResponseWithURL=Failed to load ‘%1$S’. A ServiceWorker passed a promise to FetchEvent.respondWith() that resolved with non-Response value ‘%2$S’.
# LOCALIZATION NOTE: Do not translate "ServiceWorker", "Service-Worker-Allowed" or "HTTP". %1$S and %2$S are URLs.
-ServiceWorkerScopePathMismatch=Failed to register a ServiceWorker: The path of the provided scope '%1$S' is not under the max scope allowed '%2$S'. Adjust the scope, move the Service Worker script, or use the Service-Worker-Allowed HTTP header to allow the scope.
-ExecCommandCutCopyDeniedNotInputDriven=document.execCommand('cut'/'copy') was denied because it was not called from inside a short running user-generated event handler.
+ServiceWorkerScopePathMismatch=Failed to register a ServiceWorker: The path of the provided scope ‘%1$S’ is not under the max scope allowed ‘%2$S’. Adjust the scope, move the Service Worker script, or use the Service-Worker-Allowed HTTP header to allow the scope.
+ExecCommandCutCopyDeniedNotInputDriven=document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler.
ManifestShouldBeObject=Manifest should be an object.
ManifestScopeURLInvalid=The scope URL is invalid.
ManifestScopeNotSameOrigin=The scope URL must be same origin as document.
@@ -211,15 +211,15 @@ ManifestStartURLOutsideScope=The start URL is outside the scope, so the scope is
ManifestStartURLInvalid=The start URL is invalid.
ManifestStartURLShouldBeSameOrigin=The start URL must be same origin as document.
# LOCALIZATION NOTE: %1$S is the name of the object whose property is invalid. %2$S is the name of the invalid property. %3$S is the expected type of the property value. E.g. "Expected the manifest's start_url member to be a string."
-ManifestInvalidType=Expected the %1$S's %2$S member to be a %3$S.
+ManifestInvalidType=Expected the %1$S’s %2$S member to be a %3$S.
# LOCALIZATION NOTE: %1$S is the name of the property whose value is invalid. %2$S is the (invalid) value of the property. E.g. "theme_color: 42 is not a valid CSS color."
ManifestInvalidCSSColor=%1$S: %2$S is not a valid CSS color.
PatternAttributeCompileFailure=Unable to check because the pattern is not a valid regexp: %S
# LOCALIZATION NOTE: Do not translate "postMessage" or DOMWindow. %S values are origins, like https://domain.com:port
-TargetPrincipalDoesNotMatch=Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('%S') does not match the recipient window's origin ('%S').
+TargetPrincipalDoesNotMatch=Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘%S’) does not match the recipient window’s origin (‘%S’).
# LOCALIZATION NOTE: Do not translate 'youtube'. %S values are origins, like https://domain.com:port
RewriteYoutubeEmbed=Rewriting old-style Youtube Flash embed (%S) to iframe embed (%S). Please update page to use iframe instead of embed/object, if possible.
# LOCALIZATION NOTE: Do not translate 'youtube'. %S values are origins, like https://domain.com:port
RewriteYoutubeEmbedInvalidQuery=Rewriting old-style Youtube Flash embed (%S) to iframe embed (%S). Query was invalid and removed from URL. Please update page to use iframe instead of embed/object, if possible.
# LOCALIZATION NOTE: Do not translate "ServiceWorker". %1$S is the ServiceWorker scope URL. %2$S is an error string.
-PushMessageDecryptionFailure=The ServiceWorker for scope '%1$S' encountered an error decrypting a push message: '%2$S'. For help with encryption, please see https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Using_the_Push_API#Encryption
+PushMessageDecryptionFailure=The ServiceWorker for scope ‘%1$S’ encountered an error decrypting a push message: ‘%2$S’. For help with encryption, please see https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Using_the_Push_API#Encryption
diff --git a/dom/locales/en-US/chrome/layout/css.properties b/dom/locales/en-US/chrome/layout/css.properties
index dfd939e35de0..5328d0435989 100644
--- a/dom/locales/en-US/chrome/layout/css.properties
+++ b/dom/locales/en-US/chrome/layout/css.properties
@@ -2,39 +2,39 @@
# 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/.
-MimeNotCss=The stylesheet %1$S was not loaded because its MIME type, "%2$S", is not "text/css".
-MimeNotCssWarn=The stylesheet %1$S was loaded as CSS even though its MIME type, "%2$S", is not "text/css".
+MimeNotCss=The stylesheet %1$S was not loaded because its MIME type, “%2$S”, is not “text/css”.
+MimeNotCssWarn=The stylesheet %1$S was loaded as CSS even though its MIME type, “%2$S”, is not “text/css”.
PEUnexpEOF2=Unexpected end of file while searching for %1$S.
PEParseRuleWSOnly=Whitespace-only string given to be parsed as rule.
PEDeclDropped=Declaration dropped.
PEDeclSkipped=Skipped to next declaration.
-PEUnknownProperty=Unknown property '%1$S'.
-PEValueParsingError=Error in parsing value for '%1$S'.
-PEExpectEndValue=Expected end of value but found '%1$S'.
-PERuleTrailing=Expected end of rule but found '%1$S'.
+PEUnknownProperty=Unknown property ‘%1$S’.
+PEValueParsingError=Error in parsing value for ‘%1$S’.
+PEExpectEndValue=Expected end of value but found ‘%1$S’.
+PERuleTrailing=Expected end of rule but found ‘%1$S’.
PESkipAtRuleEOF2=end of at-rule
-PEUnknownAtRule=Unrecognized at-rule or error parsing at-rule '%1$S'.
+PEUnknownAtRule=Unrecognized at-rule or error parsing at-rule ‘%1$S’.
PECharsetRuleEOF=charset string in @charset rule
-PECharsetRuleNotString=Expected charset string but found '%1$S'.
+PECharsetRuleNotString=Expected charset string but found ‘%1$S’.
PEGatherMediaEOF=end of media list in @import or @media rule
-PEGatherMediaNotComma=Expected ',' in media list but found '%1$S'.
-PEGatherMediaNotIdent=Expected identifier in media list but found '%1$S'.
-PEGatherMediaReservedMediaType=Found reserved keyword '%1$S' when looking for media type.
+PEGatherMediaNotComma=Expected ‘,’ in media list but found ‘%1$S’.
+PEGatherMediaNotIdent=Expected identifier in media list but found ‘%1$S’.
+PEGatherMediaReservedMediaType=Found reserved keyword ‘%1$S’ when looking for media type.
PEParseSourceSizeListEOF=length value for matched media condition
-PEParseSourceSizeListNotComma=Expected ',' after value but found '%1$S'
-PEImportNotURI=Expected URI in @import rule but found '%1$S'.
-PEImportBadURI=Invalid URI in @import rule: '%1$S'.
-PEImportUnexpected=Found unexpected '%1$S' within @import.
+PEParseSourceSizeListNotComma=Expected ‘,’ after value but found ‘%1$S’
+PEImportNotURI=Expected URI in @import rule but found ‘%1$S’.
+PEImportBadURI=Invalid URI in @import rule: ‘%1$S’.
+PEImportUnexpected=Found unexpected ‘%1$S’ within @import.
PEGroupRuleEOF2=end of @media, @supports or @-moz-document rule
PEGroupRuleNestedAtRule=%1$S rule not allowed within @media or @-moz-document rule.
-PEMozDocRuleBadFunc2=Expected url(), url-prefix(), domain() or regexp() in @-moz-document rule but found '%1$S'.
-PEMozDocRuleNotURI=Expected URI in @-moz-document rule but found '%1$S'.
-PEMozDocRuleNotString=Expected string in @-moz-document rule regexp() function but found '%1$S'.
+PEMozDocRuleBadFunc2=Expected url(), url-prefix(), domain() or regexp() in @-moz-document rule but found ‘%1$S’.
+PEMozDocRuleNotURI=Expected URI in @-moz-document rule but found ‘%1$S’.
+PEMozDocRuleNotString=Expected string in @-moz-document rule regexp() function but found ‘%1$S’.
PEMozDocRuleEOF=next URI in @-moz-document rule
PEAtNSPrefixEOF=namespace prefix in @namespace rule
PEAtNSURIEOF=namespace URI in @namespace rule
-PEAtNSUnexpected=Unexpected token within @namespace: '%1$S'.
+PEAtNSUnexpected=Unexpected token within @namespace: ‘%1$S’.
PEKeyframeNameEOF=name of @keyframes rule.
PEKeyframeBadName=Expected identifier for name of @keyframes rule.
PEKeyframeBrace=Expected opening { of @keyframes rule.
@@ -42,136 +42,136 @@ PESkipDeclBraceEOF=closing } of declaration block
PESkipRSBraceEOF=closing } of invalid rule set
PEBadSelectorRSIgnored=Ruleset ignored due to bad selector.
PEBadSelectorKeyframeRuleIgnored=Keyframe rule ignored due to bad selector.
-PESelectorListExtraEOF=',' or '{'
-PESelectorListExtra=Expected ',' or '{' but found '%1$S'.
+PESelectorListExtraEOF=‘,’ or ‘{’
+PESelectorListExtra=Expected ‘,’ or ‘{’ but found ‘%1$S’.
PESelectorGroupNoSelector=Selector expected.
PESelectorGroupExtraCombinator=Dangling combinator.
PECounterStyleNotIdent=Expected identifier for name of @counter-style rule.
-PECounterStyleBadName=Name of @counter-style rule can't be '%1$S'.
-PECounterStyleBadBlockStart=Expected '{' to begin @counter-style rule but found '%1$S'.
-PECounterStyleEOF=closing '}' of @counter-style block
-PECounterDescExpected=Expected counter descriptor but found '%1$S'.
-PEUnknownCounterDesc=Unknown descriptor '%1$S' in @counter-style rule.
-PECounterExtendsNotIdent=Expected identifier for extends system but found '%1$S'.
+PECounterStyleBadName=Name of @counter-style rule can’t be ‘%1$S’.
+PECounterStyleBadBlockStart=Expected ‘{’ to begin @counter-style rule but found ‘%1$S’.
+PECounterStyleEOF=closing ‘}’ of @counter-style block
+PECounterDescExpected=Expected counter descriptor but found ‘%1$S’.
+PEUnknownCounterDesc=Unknown descriptor ‘%1$S’ in @counter-style rule.
+PECounterExtendsNotIdent=Expected identifier for extends system but found ‘%1$S’.
PECounterASWeight=Each weight in the additive-symbols descriptor must be smaller than the previous weight.
PEClassSelEOF=class name
-PEClassSelNotIdent=Expected identifier for class selector but found '%1$S'.
-PECoordinatePair=Expected coordinate pair but found '%1$S'.
+PEClassSelNotIdent=Expected identifier for class selector but found ‘%1$S’.
+PECoordinatePair=Expected coordinate pair but found ‘%1$S’.
PETypeSelEOF=element type
-PETypeSelNotType=Expected element name or '*' but found '%1$S'.
-PEUnknownNamespacePrefix=Unknown namespace prefix '%1$S'.
+PETypeSelNotType=Expected element name or ‘*’ but found ‘%1$S’.
+PEUnknownNamespacePrefix=Unknown namespace prefix ‘%1$S’.
PEAttributeNameEOF=attribute name
-PEAttributeNameExpected=Expected identifier for attribute name but found '%1$S'.
-PEAttributeNameOrNamespaceExpected=Expected attribute name or namespace but found '%1$S'.
-PEAttSelNoBar=Expected '|' but found '%1$S'.
+PEAttributeNameExpected=Expected identifier for attribute name but found ‘%1$S’.
+PEAttributeNameOrNamespaceExpected=Expected attribute name or namespace but found ‘%1$S’.
+PEAttSelNoBar=Expected ‘|’ but found ‘%1$S’.
PEAttSelInnerEOF=part of attribute selector
-PEAttSelUnexpected=Unexpected token in attribute selector: '%1$S'.
+PEAttSelUnexpected=Unexpected token in attribute selector: ‘%1$S’.
PEAttSelValueEOF=attribute value
-PEAttSelCloseEOF=']' to end attribute selector
-PEAttSelNoClose=Expected ']' to terminate attribute selector but found '%1$S'.
-PEAttSelBadValue=Expected identifier or string for value in attribute selector but found '%1$S'.
+PEAttSelCloseEOF=‘]’ to end attribute selector
+PEAttSelNoClose=Expected ‘]’ to terminate attribute selector but found ‘%1$S’.
+PEAttSelBadValue=Expected identifier or string for value in attribute selector but found ‘%1$S’.
PEPseudoSelEOF=name of pseudo-class or pseudo-element
-PEPseudoSelBadName=Expected identifier for pseudo-class or pseudo-element but found '%1$S'.
-PEPseudoSelNonFunc=Function token for non-function pseudo-class or pseudo-element, or the other way around, when reading '%1$S'.
-PEPseudoSelNotPE=Expected pseudo-element but found '%1$S'.
-PEPseudoSelDoubleNot=Negation pseudo-class can't be negated '%1$S'.
-PEPseudoSelPEInNot=Pseudo-elements can't be negated '%1$S'.
-PEPseudoSelNewStyleOnly=This pseudo-element must use the "::" form: '%1$S'.
-PEPseudoSelEndOrUserActionPC=Expected end of selector or a user action pseudo-class after pseudo-element but found '%1$S'.
-PEPseudoSelNoUserActionPC=Expected end of selector after pseudo-element that does not support user action pseudo-classes but found '%1$S'.
-PEPseudoSelMultiplePE=Extra pseudo-element '%1$S'.
-PEPseudoSelUnknown=Unknown pseudo-class or pseudo-element '%1$S'.
+PEPseudoSelBadName=Expected identifier for pseudo-class or pseudo-element but found ‘%1$S’.
+PEPseudoSelNonFunc=Function token for non-function pseudo-class or pseudo-element, or the other way around, when reading ‘%1$S’.
+PEPseudoSelNotPE=Expected pseudo-element but found ‘%1$S’.
+PEPseudoSelDoubleNot=Negation pseudo-class can’t be negated ‘%1$S’.
+PEPseudoSelPEInNot=Pseudo-elements can’t be negated ‘%1$S’.
+PEPseudoSelNewStyleOnly=This pseudo-element must use the “::” form: ‘%1$S’.
+PEPseudoSelEndOrUserActionPC=Expected end of selector or a user action pseudo-class after pseudo-element but found ‘%1$S’.
+PEPseudoSelNoUserActionPC=Expected end of selector after pseudo-element that does not support user action pseudo-classes but found ‘%1$S’.
+PEPseudoSelMultiplePE=Extra pseudo-element ‘%1$S’.
+PEPseudoSelUnknown=Unknown pseudo-class or pseudo-element ‘%1$S’.
PENegationEOF=selector within negation
-PENegationBadInner=Malformed simple selector as negation pseudo-class argument '%1$S'.
-PENegationNoClose=Missing closing ')' in negation pseudo-class '%1$S'.
-PENegationBadArg=Missing argument in negation pseudo-class '%1$S'.
+PENegationBadInner=Malformed simple selector as negation pseudo-class argument ‘%1$S’.
+PENegationNoClose=Missing closing ‘)’ in negation pseudo-class ‘%1$S’.
+PENegationBadArg=Missing argument in negation pseudo-class ‘%1$S’.
PEPseudoClassArgEOF=argument to pseudo-class selector
-PEPseudoClassArgNotIdent=Expected identifier for pseudo-class parameter but found '%1$S'.
-PEPseudoClassArgNotNth=Expected part of argument to pseudo-class but found '%1$S'.
-PEPseudoClassNoClose=Missing closing ')' in pseudo-class, found '%1$S' instead.
-PEPseudoClassNoArg=Missing argument in pseudo-class '%1$S'.
-PEPseudoClassNotUserAction=Expected end of selector or a user action pseudo-class after pseudo-element but found pseudo-class '%1$S'.
+PEPseudoClassArgNotIdent=Expected identifier for pseudo-class parameter but found ‘%1$S’.
+PEPseudoClassArgNotNth=Expected part of argument to pseudo-class but found ‘%1$S’.
+PEPseudoClassNoClose=Missing closing ‘)’ in pseudo-class, found ‘%1$S’ instead.
+PEPseudoClassNoArg=Missing argument in pseudo-class ‘%1$S’.
+PEPseudoClassNotUserAction=Expected end of selector or a user action pseudo-class after pseudo-element but found pseudo-class ‘%1$S’.
PESelectorEOF=selector
-PEBadDeclBlockStart=Expected '{' to begin declaration block but found '%1$S'.
+PEBadDeclBlockStart=Expected ‘{’ to begin declaration block but found ‘%1$S’.
PEColorEOF=color
-PEColorNotColor=Expected color but found '%1$S'.
+PEColorNotColor=Expected color but found ‘%1$S’.
PEColorComponentEOF=color component
-PEExpectedPercent=Expected a percentage but found '%1$S'.
-PEExpectedInt=Expected an integer but found '%1$S'.
-PEColorBadRGBContents=Expected number or percentage in rgb() but found '%1$S'.
-PEColorComponentBadTerm=Expected '%2$S' but found '%1$S'.
+PEExpectedPercent=Expected a percentage but found ‘%1$S’.
+PEExpectedInt=Expected an integer but found ‘%1$S’.
+PEColorBadRGBContents=Expected number or percentage in rgb() but found ‘%1$S’.
+PEColorComponentBadTerm=Expected ‘%2$S’ but found ‘%1$S’.
PEColorHueEOF=hue
-PEExpectedComma=Expected ',' but found '%1$S'.
+PEExpectedComma=Expected ‘,’ but found ‘%1$S’.
PEColorSaturationEOF=saturation
PEColorLightnessEOF=lightness
PEColorOpacityEOF=opacity in color value
-PEExpectedNumber=Expected a number but found '%1$S'.
+PEExpectedNumber=Expected a number but found ‘%1$S’.
PEPositionEOF=
-PEExpectedPosition=Expected but found '%1$S'.
-PEExpectedRadius=Expected radius but found '%1$S'.
-PEExpectedCloseParen=Expected ')' but found '%1$S'.
-PEDeclEndEOF=';' or '}' to end declaration
-PEParseDeclarationNoColon=Expected ':' but found '%1$S'.
-PEParseDeclarationDeclExpected=Expected declaration but found '%1$S'.
+PEExpectedPosition=Expected but found ‘%1$S’.
+PEExpectedRadius=Expected radius but found ‘%1$S’.
+PEExpectedCloseParen=Expected ‘)’ but found ‘%1$S’.
+PEDeclEndEOF=‘;’ or ‘}’ to end declaration
+PEParseDeclarationNoColon=Expected ‘:’ but found ‘%1$S’.
+PEParseDeclarationDeclExpected=Expected declaration but found ‘%1$S’.
PEEndOfDeclEOF=end of declaration
PEImportantEOF=important
-PEExpectedImportant=Expected 'important' but found '%1$S'.
-PEBadDeclEnd=Expected ';' to terminate declaration but found '%1$S'.
-PEBadDeclOrRuleEnd2=Expected ';' or '}' to terminate declaration but found '%1$S'.
+PEExpectedImportant=Expected ‘important’ but found ‘%1$S’.
+PEBadDeclEnd=Expected ‘;’ to terminate declaration but found ‘%1$S’.
+PEBadDeclOrRuleEnd2=Expected ‘;’ or ‘}’ to terminate declaration but found ‘%1$S’.
PEInaccessibleProperty2=Cannot specify value for internal property.
PECommentEOF=end of comment
-SEUnterminatedString=Found unclosed string '%1$S'.
-PEFontDescExpected=Expected font descriptor but found '%1$S'.
-PEUnknownFontDesc=Unknown descriptor '%1$S' in @font-face rule.
-PEMQExpectedExpressionStart=Expected '(' to start media query expression but found '%1$S'.
+SEUnterminatedString=Found unclosed string ‘%1$S’.
+PEFontDescExpected=Expected font descriptor but found ‘%1$S’.
+PEUnknownFontDesc=Unknown descriptor ‘%1$S’ in @font-face rule.
+PEMQExpectedExpressionStart=Expected ‘(’ to start media query expression but found ‘%1$S’.
PEMQExpressionEOF=contents of media query expression
-PEMQExpectedFeatureName=Expected media feature name but found '%1$S'.
-PEMQExpectedFeatureNameEnd=Expected ':' or ')' after media feature name but found '%1$S'.
+PEMQExpectedFeatureName=Expected media feature name but found ‘%1$S’.
+PEMQExpectedFeatureNameEnd=Expected ‘:’ or ‘)’ after media feature name but found ‘%1$S’.
PEMQNoMinMaxWithoutValue=Media features with min- or max- must have a value.
PEMQExpectedFeatureValue=Found invalid value for media feature.
-PEBadFontBlockStart=Expected '{' to begin @font-face rule but found '%1$S'.
-PEBadFontBlockEnd=Expected '}' to end @font-face rule but found '%1$S'.
+PEBadFontBlockStart=Expected ‘{’ to begin @font-face rule but found ‘%1$S’.
+PEBadFontBlockEnd=Expected ‘}’ to end @font-face rule but found ‘%1$S’.
PEAnonBoxNotAlone=Did not expect anonymous box.
PEFFVUnexpectedEOF=Unexpected end of @font-feature-values rule.
-PEFFVBlockStart=Expected opening { of @font-feature-values rule but found '%1$S'.
-PEFFVValueSetStart=Expected opening { of feature value set but found '%1$S'.
-PEFFVNoFamily=Expected font family list for @font-feature-values rule but found '%1$S'.
-PEFFVUnexpectedBlockEnd=Expected '}' to end @font-feature-values rule but found '%1$S'.
-PEFFVUnknownFontVariantPropValue=Unknown font-variant property value '%1$S'.
-PEFFVExpectedIdent=Expected identifier but found '%1$S'.
-PEFFVExpectedValue=Expected non-negative integer value but found '%1$S'.
-PEFFVTooManyValues=Too many values for feature type '%1$S'.
+PEFFVBlockStart=Expected opening { of @font-feature-values rule but found ‘%1$S’.
+PEFFVValueSetStart=Expected opening { of feature value set but found ‘%1$S’.
+PEFFVNoFamily=Expected font family list for @font-feature-values rule but found ‘%1$S’.
+PEFFVUnexpectedBlockEnd=Expected ‘}’ to end @font-feature-values rule but found ‘%1$S’.
+PEFFVUnknownFontVariantPropValue=Unknown font-variant property value ‘%1$S’.
+PEFFVExpectedIdent=Expected identifier but found ‘%1$S’.
+PEFFVExpectedValue=Expected non-negative integer value but found ‘%1$S’.
+PEFFVTooManyValues=Too many values for feature type ‘%1$S’.
PEFFVGenericInFamilyList=Family list cannot contain generic font family name.
-PEFFVValueDefinitionTrailing=Expected end of value definition but found '%1$S'.
-PEBadDirValue=Expected 'ltr' or 'rtl' in direction selector but found '%1$S'.
-PESupportsConditionStartEOF2='not', '(', or function
-PESupportsConditionInParensEOF=')'
-PESupportsConditionNotEOF='not'
-PESupportsWhitespaceRequired=Expected whitespace after 'not', 'and', or 'or'.
-PESupportsConditionExpectedOpenParenOrFunction=Expected '(' or function while parsing supports condition but found '%1$S'.
-PESupportsConditionExpectedCloseParen=Expected ')' while parsing supports condition but found '%1$S'.
-PESupportsConditionExpectedStart2=Expected 'not', '(', or function while parsing supports condition but found '%1$S'.
-PESupportsConditionExpectedNot=Expected 'not' while parsing supports condition but found '%1$S'.
-PESupportsGroupRuleStart=Expected '{' to begin @supports rule but found '%1$S'.
+PEFFVValueDefinitionTrailing=Expected end of value definition but found ‘%1$S’.
+PEBadDirValue=Expected ‘ltr’ or ‘rtl’ in direction selector but found ‘%1$S’.
+PESupportsConditionStartEOF2=‘not’, ‘(’, or function
+PESupportsConditionInParensEOF=‘)’
+PESupportsConditionNotEOF=‘not’
+PESupportsWhitespaceRequired=Expected whitespace after ‘not’, ‘and’, or ‘or’.
+PESupportsConditionExpectedOpenParenOrFunction=Expected ‘(’ or function while parsing supports condition but found ‘%1$S’.
+PESupportsConditionExpectedCloseParen=Expected ‘)’ while parsing supports condition but found ‘%1$S’.
+PESupportsConditionExpectedStart2=Expected ‘not’, ‘(’, or function while parsing supports condition but found ‘%1$S’.
+PESupportsConditionExpectedNot=Expected ‘not’ while parsing supports condition but found ‘%1$S’.
+PESupportsGroupRuleStart=Expected ‘{’ to begin @supports rule but found ‘%1$S’.
PEFilterEOF=filter
-PEExpectedNoneOrURL=Expected 'none' or URL but found '%1$S'.
-PEExpectedNoneOrURLOrFilterFunction=Expected 'none', URL, or filter function but found '%1$S'.
+PEExpectedNoneOrURL=Expected ‘none’ or URL but found ‘%1$S’.
+PEExpectedNoneOrURLOrFilterFunction=Expected ‘none’, URL, or filter function but found ‘%1$S’.
PEExpectedNonnegativeNP=Expected non-negative number or percentage.
PEFilterFunctionArgumentsParsingError=Error in parsing arguments for filter function.
PEVariableEOF=variable
-PEVariableEmpty=Expected variable value but found '%1$S'.
+PEVariableEmpty=Expected variable value but found ‘%1$S’.
# LOCALIZATION NOTE(PEValueWithVariablesParsingErrorInValue): %1$S is replaced
# with the property name and %2$S is replaced with the property value.
-PEValueWithVariablesParsingErrorInValue=Error in parsing value for '%1$S' after substituting variables. Generated value was '%2$S'.
-PEValueWithVariablesFallbackInherit=Falling back to 'inherit'.
-PEValueWithVariablesFallbackInitial=Falling back to 'initial'.
+PEValueWithVariablesParsingErrorInValue=Error in parsing value for ‘%1$S’ after substituting variables. Generated value was ‘%2$S’.
+PEValueWithVariablesFallbackInherit=Falling back to ‘inherit’.
+PEValueWithVariablesFallbackInitial=Falling back to ‘initial’.
PEInvalidVariableReference=Property contained reference to invalid variable.
-PEInvalidVariableTokenFallback=Found invalid token '%1$S' at top level of variable reference fallback.
+PEInvalidVariableTokenFallback=Found invalid token ‘%1$S’ at top level of variable reference fallback.
PEExpectedVariableNameEOF=identifier for variable name
-PEExpectedVariableName=Expected identifier for variable name but found '%1$S'.
-PEExpectedVariableFallback=Expected variable reference fallback after ','.
-PEExpectedVariableCommaOrCloseParen=Expected ',' or ')' after variable name in variable reference but found '%1$S'.
-PESubgridNotSupported=Support for the 'subgrid' keyword of CSS Grid is not enabled.
+PEExpectedVariableName=Expected identifier for variable name but found ‘%1$S’.
+PEExpectedVariableFallback=Expected variable reference fallback after ‘,’.
+PEExpectedVariableCommaOrCloseParen=Expected ‘,’ or ‘)’ after variable name in variable reference but found ‘%1$S’.
+PESubgridNotSupported=Support for the ‘subgrid’ keyword of CSS Grid is not enabled.
PEMoreThanOneGridRepeatAutoFillInNameList=Only one repeat(auto-fill, …) is allowed in a name list for a subgrid.
PEMoreThanOneGridRepeatAutoFillFitInTrackList=Only one repeat(auto-fill, …) or repeat(auto-fit, …) is allowed in a track list.
PEMoreThanOneGridRepeatTrackSize=Only one track size is allowed inside repeat(auto-fit/auto-fill, …).
diff --git a/dom/locales/en-US/chrome/layout/layout_errors.properties b/dom/locales/en-US/chrome/layout/layout_errors.properties
index ede67c3331cd..be244ce02429 100644
--- a/dom/locales/en-US/chrome/layout/layout_errors.properties
+++ b/dom/locales/en-US/chrome/layout/layout_errors.properties
@@ -2,11 +2,11 @@
# 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/.
-ImageMapRectBoundsError=The "coords" attribute of the tag is not in the "left,top,right,bottom" format.
-ImageMapCircleWrongNumberOfCoords=The "coords" attribute of the tag is not in the "center-x,center-y,radius" format.
-ImageMapCircleNegativeRadius=The "coords" attribute of the tag has a negative radius.
-ImageMapPolyWrongNumberOfCoords=The "coords" attribute of the tag is not in the "x1,y1,x2,y2 …" format.
-ImageMapPolyOddNumberOfCoords=The "coords" attribute of the tag is missing the last "y" coordinate (the correct format is "x1,y1,x2,y2 …").
+ImageMapRectBoundsError=The “coords” attribute of the tag is not in the “left,top,right,bottom” format.
+ImageMapCircleWrongNumberOfCoords=The “coords” attribute of the tag is not in the “center-x,center-y,radius” format.
+ImageMapCircleNegativeRadius=The “coords” attribute of the tag has a negative radius.
+ImageMapPolyWrongNumberOfCoords=The “coords” attribute of the tag is not in the “x1,y1,x2,y2 …” format.
+ImageMapPolyOddNumberOfCoords=The “coords” attribute of the tag is missing the last “y” coordinate (the correct format is “x1,y1,x2,y2 …”).
TablePartRelPosWarning=Relative positioning of table rows and row groups is now supported. This site may need to be updated because it may depend on this feature having no effect.
ScrollLinkedEffectFound2=This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects for further details and to join the discussion on related tools and features!
@@ -19,16 +19,16 @@ ScrollLinkedEffectFound2=This site appears to use a scroll-linked positioning ef
AnimationWarningContentTooLarge=Animation cannot be run on the compositor because the frame size (%1$S, %2$S) is bigger than the viewport (%3$S, %4$S) or the visual rectangle (%5$S, %6$S) is larger than the maximum allowed value (%7$S)
## LOCALIZATION NOTE(AnimationWarningTransformBackfaceVisibilityHidde):
## 'backface-visibility: hidden' is a CSS property, don't translate it.
-AnimationWarningTransformBackfaceVisibilityHidden=Animations of 'backface-visibility: hidden' transforms cannot be run on the compositor
+AnimationWarningTransformBackfaceVisibilityHidden=Animations of ‘backface-visibility: hidden’ transforms cannot be run on the compositor
## LOCALIZATION NOTE(AnimationWarningTransformPreserve3D):
## 'transform-style: preserve-3d' is a CSS property, don't translate it.
-AnimationWarningTransformPreserve3D=Animations of 'transform-style: preserve-3d' transforms cannot be run on the compositor
+AnimationWarningTransformPreserve3D=Animations of ‘transform-style: preserve-3d’ transforms cannot be run on the compositor
## LOCALIZATION NOTE(AnimationWarningTransformSVG,
## AnimationWarningTransformWithGeometricProperties,
## AnimationWarningTransformFrameInactive,
## AnimationWarningOpacityFrameInactive):
## 'transform' and 'opacity' mean CSS property names, don't translate it.
-AnimationWarningTransformSVG=Animations of 'transform' on elements with SVG transforms cannot be run on the compositor
-AnimationWarningTransformWithGeometricProperties=Animations of 'transform' cannot be run on the compositor when geometric properties are animated on the same element at the same time
-AnimationWarningTransformFrameInactive=Animation cannot be run on the compositor because the frame was not marked active for 'transform' animation
-AnimationWarningOpacityFrameInactive=Animation cannot be run on the compositor because the frame was not marked active for 'opacity' animation
+AnimationWarningTransformSVG=Animations of ‘transform’ on elements with SVG transforms cannot be run on the compositor
+AnimationWarningTransformWithGeometricProperties=Animations of ‘transform’ cannot be run on the compositor when geometric properties are animated on the same element at the same time
+AnimationWarningTransformFrameInactive=Animation cannot be run on the compositor because the frame was not marked active for ‘transform’ animation
+AnimationWarningOpacityFrameInactive=Animation cannot be run on the compositor because the frame was not marked active for ‘opacity’ animation
diff --git a/dom/locales/en-US/chrome/layout/printing.properties b/dom/locales/en-US/chrome/layout/printing.properties
index 6e3aed4e256b..282f11c71542 100644
--- a/dom/locales/en-US/chrome/layout/printing.properties
+++ b/dom/locales/en-US/chrome/layout/printing.properties
@@ -21,7 +21,7 @@ pageofpages=%1$d of %2$d
noprinter=No printers available.
PrintToFile=Print To File
noPrintFilename.title=Filename is missing
-noPrintFilename.alert=You have selected "Print To File", and the filename is empty!
+noPrintFilename.alert=You have selected “Print To File”, and the filename is empty!
fileConfirm.exists=%S already exists.\nDo you want to replace it?
print_error_dialog_title=Printer Error
printpreview_error_dialog_title=Print Preview Error
diff --git a/dom/locales/en-US/chrome/layout/xbl.properties b/dom/locales/en-US/chrome/layout/xbl.properties
index 5d62c65a50a0..8d48a461ab97 100644
--- a/dom/locales/en-US/chrome/layout/xbl.properties
+++ b/dom/locales/en-US/chrome/layout/xbl.properties
@@ -3,13 +3,13 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
UnexpectedElement=Unexpected <%1$S> element.
-# LOCALIZATION NOTE: do not localize key="%S" modifiers="%S"
-GTK2Conflict=Key event not available on GTK2: key="%S" modifiers="%S"
-WinConflict=Key event not available on some keyboard layouts: key="%S" modifiers="%S"
-TooDeepBindingRecursion=The XBL binding "%S" is already used by too many ancestor elements; not applying it to prevent infinite recursion.
-CircularExtendsBinding=Extending the XBL binding "%S" with "%S" would lead to it extending itself
+# LOCALIZATION NOTE: do not localize key=“%S” modifiers=“%S”
+GTK2Conflict=Key event not available on GTK2: key=“%S” modifiers=“%S”
+WinConflict=Key event not available on some keyboard layouts: key=“%S” modifiers=“%S”
+TooDeepBindingRecursion=The XBL binding “%S” is already used by too many ancestor elements; not applying it to prevent infinite recursion.
+CircularExtendsBinding=Extending the XBL binding “%S” with “%S” would lead to it extending itself
# LOCALIZATION NOTE: do not localize
CommandNotInChrome=Use of not allowed outside chrome.
MalformedXBL = An XBL file is malformed. Did you forget the XBL namespace on the bindings tag?
-InvalidExtendsBinding=Extending "%S" is invalid. In general, do not extend tag names.
-MissingIdAttr = An "id" attribute missing on the binding tag.
+InvalidExtendsBinding=Extending “%S” is invalid. In general, do not extend tag names.
+MissingIdAttr = An “id” attribute missing on the binding tag.
diff --git a/dom/locales/en-US/chrome/layout/xul.properties b/dom/locales/en-US/chrome/layout/xul.properties
index 7852fd77e6e3..844f7301f3cc 100644
--- a/dom/locales/en-US/chrome/layout/xul.properties
+++ b/dom/locales/en-US/chrome/layout/xul.properties
@@ -5,4 +5,4 @@
MissingOverlay=Failed to load overlay from %1$S.
PINotInProlog=%1$S?> processing instruction does not have any effect outside the prolog anymore (see bug 360119).
NeededToWrapXUL=XUL box for %1$S element contained an inline %2$S child, forcing all its children to be wrapped in a block.
-NeededToWrapXULInlineBox=XUL box for %1$S element contained an inline %2$S child, forcing all its children to be wrapped in a block. This can often be fixed by replacing "display: -moz-inline-box" with "display: -moz-inline-box; display: inline-block".
+NeededToWrapXULInlineBox=XUL box for %1$S element contained an inline %2$S child, forcing all its children to be wrapped in a block. This can often be fixed by replacing “display: -moz-inline-box” with “display: -moz-inline-box; display: inline-block”.
diff --git a/dom/locales/en-US/chrome/mathml/mathml.properties b/dom/locales/en-US/chrome/mathml/mathml.properties
index f179ff0718d9..4218595042c6 100644
--- a/dom/locales/en-US/chrome/mathml/mathml.properties
+++ b/dom/locales/en-US/chrome/mathml/mathml.properties
@@ -10,8 +10,8 @@ NoBase=Invalid markup: Expected exactly one Base element in . F
SubSupMismatch=Invalid markup: Incomplete subscript/superscript pair in .
# LOCALIZATION NOTE: When localizing the single quotes ('), follow the conventions in css.properties for your target locale.
-AttributeParsingError=Error in parsing the value '%1$S' for '%2$S' attribute of <%3$S/>. Attribute ignored.
-AttributeParsingErrorNoTag=Error in parsing the value '%1$S' for '%2$S' attribute. Attribute ignored.
-LengthParsingError=Error in parsing MathML attribute value '%1$S' as length. Attribute ignored.
-DeprecatedSupersededBy='%1$S' is deprecated in MathML 3, superseded by '%2$S'.
+AttributeParsingError=Error in parsing the value ‘%1$S’ for ‘%2$S’ attribute of <%3$S/>. Attribute ignored.
+AttributeParsingErrorNoTag=Error in parsing the value ‘%1$S’ for ‘%2$S’ attribute. Attribute ignored.
+LengthParsingError=Error in parsing MathML attribute value ‘%1$S’ as length. Attribute ignored.
+DeprecatedSupersededBy=‘%1$S’ is deprecated in MathML 3, superseded by ‘%2$S’.
UnitlessValuesAreDeprecated=Unitless values are deprecated in MathML 3.
diff --git a/dom/locales/en-US/chrome/netError.dtd b/dom/locales/en-US/chrome/netError.dtd
index 4903069adeb5..564543f117ec 100644
--- a/dom/locales/en-US/chrome/netError.dtd
+++ b/dom/locales/en-US/chrome/netError.dtd
@@ -8,7 +8,7 @@
-Though the site seems valid, the browser was unable to establish a connection.Could the site be temporarily unavailable? Try again later. Are you unable to browse other sites? Check the computer's network connection. Is your computer or network protected by a firewall or proxy? Incorrect settings can interfere with Web browsing. ">
+Though the site seems valid, the browser was unable to establish a connection.Could the site be temporarily unavailable? Try again later. Are you unable to browse other sites? Check the computer’s network connection. Is your computer or network protected by a firewall or proxy? Incorrect settings can interfere with Web browsing. ">
The requested address specified a port (e.g. mozilla.org:80 for port 80 on mozilla.org) normally used for purposes other than Web browsing. The browser has canceled the request for your protection and security.">
@@ -29,10 +29,10 @@
The provided address is not in a recognized format. Please check the location bar for mistakes and try again.">
-The browser connected successfully, but the connection was interrupted while transferring information. Please try again.Are you unable to browse other sites? Check the computer's network connection. Still having trouble? Consult your network administrator or Internet provider for assistance. ">
+The browser connected successfully, but the connection was interrupted while transferring information. Please try again.Are you unable to browse other sites? Check the computer’s network connection. Still having trouble? Consult your network administrator or Internet provider for assistance. ">
-The requested document is not available in the browser's cache.As a security precaution, the browser does not automatically re-request sensitive documents. Click Try Again to re-request the document from the website. ">
+The requested document is not available in the browser’s cache.As a security precaution, the browser does not automatically re-request sensitive documents. Click Try Again to re-request the document from the website. ">
The browser is operating in its offline mode and cannot connect to the requested item.Is the computer connected to an active network? Press "Try Again" to switch to online mode and reload the page. ">
@@ -51,19 +51,19 @@
The network link was interrupted while negotiating a connection. Please try again.">
-The requested site did not respond to a connection request and the browser has stopped waiting for a reply.Could the server be experiencing high demand or a temporary outage? Try again later. Are you unable to browse other sites? Check the computer's network connection. Is your computer or network protected by a firewall or proxy? Incorrect settings can interfere with Web browsing. Still having trouble? Consult your network administrator or Internet provider for assistance. ">
+The requested site did not respond to a connection request and the browser has stopped waiting for a reply.Could the server be experiencing high demand or a temporary outage? Try again later. Are you unable to browse other sites? Check the computer’s network connection. Is your computer or network protected by a firewall or proxy? Incorrect settings can interfere with Web browsing. Still having trouble? Consult your network administrator or Internet provider for assistance. ">
The address specifies a protocol (e.g. wxyz:// ) the browser does not recognize, so the browser cannot properly connect to the site.Are you trying to access multimedia or other non-text services? Check the site for extra requirements. Some protocols may require third-party software or plugins before the browser can recognize them. ">
-The browser is configured to use a proxy server, but the proxy refused a connection.Is the browser's proxy configuration correct? Check the settings and try again. Does the proxy service allow connections from this network? Still having trouble? Consult your network administrator or Internet provider for assistance. ">
+The browser is configured to use a proxy server, but the proxy refused a connection.Is the browser’s proxy configuration correct? Check the settings and try again. Does the proxy service allow connections from this network? Still having trouble? Consult your network administrator or Internet provider for assistance. ">
-The browser is configured to use a proxy server, but the proxy could not be found.Is the browser's proxy configuration correct? Check the settings and try again. Is the computer connected to an active network? Still having trouble? Consult your network administrator or Internet provider for assistance. ">
+The browser is configured to use a proxy server, but the proxy could not be found.Is the browser’s proxy configuration correct? Check the settings and try again. Is the computer connected to an active network? Still having trouble? Consult your network administrator or Internet provider for assistance. ">
-The browser has stopped trying to retrieve the requested item. The site is redirecting the request in a way that will never complete.Have you disabled or blocked cookies required by this site? NOTE : If accepting the site's cookies does not resolve the problem, it is likely a server configuration issue and not your computer. ">
+The browser has stopped trying to retrieve the requested item. The site is redirecting the request in a way that will never complete.Have you disabled or blocked cookies required by this site? NOTE : If accepting the site’s cookies does not resolve the problem, it is likely a server configuration issue and not your computer. ">
The site responded to the network request in an unexpected way and the browser cannot continue.">
@@ -73,7 +73,7 @@
-This could be a problem with the server's configuration, or it could be someone trying to impersonate the server.
+This could be a problem with the server’s configuration, or it could be someone trying to impersonate the server.
If you have connected to this server successfully in the past, the error may be temporary, and you can try again later.
">
diff --git a/dom/locales/en-US/chrome/nsWebBrowserPersist.properties b/dom/locales/en-US/chrome/nsWebBrowserPersist.properties
index 752a6946c621..cd7be6e06072 100644
--- a/dom/locales/en-US/chrome/nsWebBrowserPersist.properties
+++ b/dom/locales/en-US/chrome/nsWebBrowserPersist.properties
@@ -13,5 +13,5 @@ SDAccessErrorCardMissing=Cannot download file because the SD card is missing.
helperAppNotFound=%S could not be opened, because the associated helper application does not exist. Change the association in your preferences.
noMemory=There is not sufficient memory to complete the action you requested.\n\nQuit some applications and try again.
title=Downloading %S
-fileAlreadyExistsError=%S could not be saved, because a file already exists with the same name as the '_files' directory.\n\nTry saving to a different location.
+fileAlreadyExistsError=%S could not be saved, because a file already exists with the same name as the ‘_files’ directory.\n\nTry saving to a different location.
fileNameTooLongError=%S could not be saved, because the file name was too long.\n\nTry saving with a shorter file name.
diff --git a/dom/locales/en-US/chrome/security/caps.properties b/dom/locales/en-US/chrome/security/caps.properties
index f072756ee213..4c2f64ad237b 100644
--- a/dom/locales/en-US/chrome/security/caps.properties
+++ b/dom/locales/en-US/chrome/security/caps.properties
@@ -110,4 +110,4 @@ SetPropertyDeniedOriginsOnlySubject = Permission denied for <%S> to set property
CallMethodDeniedOriginsOnlySubject = Permission denied for <%S> to call method %S.%S
CreateWrapperDenied = Permission denied to create wrapper for object of class %S
CreateWrapperDeniedForOrigin = Permission denied for <%2$S> to create wrapper for object of class %1$S
-ProtocolFlagError = Warning: Protocol handler for '%S' doesn't advertise a security policy. While loading of such protocols is allowed for now, this is deprecated. Please see the documentation in nsIProtocolHandler.idl.
+ProtocolFlagError = Warning: Protocol handler for ‘%S’ doesn’t advertise a security policy. While loading of such protocols is allowed for now, this is deprecated. Please see the documentation in nsIProtocolHandler.idl.
diff --git a/dom/locales/en-US/chrome/security/csp.properties b/dom/locales/en-US/chrome/security/csp.properties
index a283a37d5a25..1f0685e31d06 100644
--- a/dom/locales/en-US/chrome/security/csp.properties
+++ b/dom/locales/en-US/chrome/security/csp.properties
@@ -5,27 +5,27 @@
# CSP Warnings:
# LOCALIZATION NOTE (CSPViolation):
# %1$S is the reason why the resource has not been loaded.
-CSPViolation = The page's settings blocked the loading of a resource: %1$S
+CSPViolation = The page’s settings blocked the loading of a resource: %1$S
# LOCALIZATION NOTE (CSPViolationWithURI):
# %1$S is the directive that has been violated.
# %2$S is the URI of the resource which violated the directive.
-CSPViolationWithURI = The page's settings blocked the loading of a resource at %2$S ("%1$S").
+CSPViolationWithURI = The page’s settings blocked the loading of a resource at %2$S (“%1$S”).
# LOCALIZATION NOTE (CSPROViolation):
# %1$S is the reason why the resource has not been loaded.
-CSPROViolation = A violation occurred for a report-only CSP policy ("%1$S"). The behavior was allowed, and a CSP report was sent.
+CSPROViolation = A violation occurred for a report-only CSP policy (“%1$S”). The behavior was allowed, and a CSP report was sent.
# LOCALIZATION NOTE (CSPROViolationWithURI):
# %1$S is the directive that has been violated.
# %2$S is the URI of the resource which violated the directive.
-CSPROViolationWithURI = The page's settings observed the loading of a resource at %2$S ("%1$S"). A CSP report is being sent.
+CSPROViolationWithURI = The page’s settings observed the loading of a resource at %2$S (“%1$S”). A CSP report is being sent.
# LOCALIZATION NOTE (triedToSendReport):
# %1$S is the URI we attempted to send a report to.
-triedToSendReport = Tried to send report to invalid URI: "%1$S"
+triedToSendReport = Tried to send report to invalid URI: “%1$S”
# LOCALIZATION NOTE (couldNotParseReportURI):
# %1$S is the report URI that could not be parsed
-couldNotParseReportURI = couldn't parse report URI: %1$S
+couldNotParseReportURI = couldn’t parse report URI: %1$S
# LOCALIZATION NOTE (couldNotProcessUnknownDirective):
# %1$S is the unknown directive
-couldNotProcessUnknownDirective = Couldn't process unknown directive '%1$S'
+couldNotProcessUnknownDirective = Couldn’t process unknown directive ‘%1$S’
# LOCALIZATION NOTE (ignoringUnknownOption):
# %1$S is the option that could not be understood
ignoringUnknownOption = Ignoring unknown option %1$S
@@ -34,11 +34,11 @@ ignoringUnknownOption = Ignoring unknown option %1$S
ignoringDuplicateSrc = Ignoring duplicate source %1$S
# LOCALIZATION NOTE (ignoringSrcFromMetaCSP):
# %1$S defines the ignored src
-ignoringSrcFromMetaCSP = Ignoring source '%1$S' (Not supported when delivered via meta element).
+ignoringSrcFromMetaCSP = Ignoring source ‘%1$S’ (Not supported when delivered via meta element).
# LOCALIZATION NOTE (ignoringSrcWithinScriptStyleSrc):
# %1$S is the ignored src
# script-src and style-src are directive names and should not be localized
-ignoringSrcWithinScriptStyleSrc = Ignoring "%1$S" within script-src or style-src: nonce-source or hash-source specified
+ignoringSrcWithinScriptStyleSrc = Ignoring “%1$S” within script-src or style-src: nonce-source or hash-source specified
# LOCALIZATION NOTE (reportURInotHttpsOrHttp2):
# %1$S is the ETLD of the report URI that is not HTTP or HTTPS
reportURInotHttpsOrHttp2 = The report URI (%1$S) should be an HTTP or HTTPS URI.
@@ -59,35 +59,35 @@ inlineStyleBlocked = An attempt to apply inline style sheets has been blocked
scriptFromStringBlocked = An attempt to call JavaScript from a string (by calling a function like eval) has been blocked
# LOCALIZATION NOTE (upgradeInsecureRequest):
# %1$S is the URL of the upgraded request; %2$S is the upgraded scheme.
-upgradeInsecureRequest = Upgrading insecure request '%1$S' to use '%2$S'
+upgradeInsecureRequest = Upgrading insecure request ‘%1$S’ to use ‘%2$S’
# LOCALIZATION NOTE (ignoreSrcForDirective):
-ignoreSrcForDirective = Ignoring srcs for directive '%1$S'
+ignoreSrcForDirective = Ignoring srcs for directive ‘%1$S’
# LOCALIZATION NOTE (hostNameMightBeKeyword):
# %1$S is the hostname in question and %2$S is the keyword
-hostNameMightBeKeyword = Interpreting %1$S as a hostname, not a keyword. If you intended this to be a keyword, use '%2$S' (wrapped in single quotes).
+hostNameMightBeKeyword = Interpreting %1$S as a hostname, not a keyword. If you intended this to be a keyword, use ‘%2$S’ (wrapped in single quotes).
# LOCALIZATION NOTE (notSupportingDirective):
# directive is not supported (e.g. 'reflected-xss')
-notSupportingDirective = Not supporting directive '%1$S'. Directive and values will be ignored.
+notSupportingDirective = Not supporting directive ‘%1$S’. Directive and values will be ignored.
# LOCALIZATION NOTE (blockAllMixedContent):
# %1$S is the URL of the blocked resource load.
-blockAllMixedContent = Blocking insecure request '%1$S'.
+blockAllMixedContent = Blocking insecure request ‘%1$S’.
# CSP Errors:
# LOCALIZATION NOTE (couldntParseInvalidSource):
# %1$S is the source that could not be parsed
-couldntParseInvalidSource = Couldn't parse invalid source %1$S
+couldntParseInvalidSource = Couldn’t parse invalid source %1$S
# LOCALIZATION NOTE (couldntParseInvalidHost):
# %1$S is the host that's invalid
-couldntParseInvalidHost = Couldn't parse invalid host %1$S
+couldntParseInvalidHost = Couldn’t parse invalid host %1$S
# LOCALIZATION NOTE (couldntParseScheme):
# %1$S is the string source
-couldntParseScheme = Couldn't parse scheme in %1$S
+couldntParseScheme = Couldn’t parse scheme in %1$S
# LOCALIZATION NOTE (couldntParsePort):
# %1$S is the string source
-couldntParsePort = Couldn't parse port in %1$S
+couldntParsePort = Couldn’t parse port in %1$S
# LOCALIZATION NOTE (duplicateDirective):
# %1$S is the name of the duplicate directive
duplicateDirective = Duplicate %1$S directives detected. All but the first instance will be ignored.
# LOCALIZATION NOTE (deprecatedDirective):
# %1$S is the name of the deprecated directive, %2$S is the name of the replacement.
-deprecatedDirective = Directive '%1$S' has been deprecated. Please use directive '%2$S' instead.
+deprecatedDirective = Directive ‘%1$S’ has been deprecated. Please use directive ‘%2$S’ instead.
diff --git a/dom/locales/en-US/chrome/security/security.properties b/dom/locales/en-US/chrome/security/security.properties
index e89b4d9700e6..bd3a9b410d47 100644
--- a/dom/locales/en-US/chrome/security/security.properties
+++ b/dom/locales/en-US/chrome/security/security.properties
@@ -1,72 +1,72 @@
# Mixed Content Blocker
# LOCALIZATION NOTE: "%1$S" is the URI of the blocked mixed content resource
-BlockMixedDisplayContent = Blocked loading mixed display content "%1$S"
-BlockMixedActiveContent = Blocked loading mixed active content "%1$S"
+BlockMixedDisplayContent = Blocked loading mixed display content “%1$S”
+BlockMixedActiveContent = Blocked loading mixed active content “%1$S”
# CORS
# LOCALIZATION NOTE: Do not translate "Access-Control-Allow-Origin", Access-Control-Allow-Credentials, Access-Control-Allow-Methods, Access-Control-Allow-Headers
CORSDisabled=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS disabled).
CORSRequestNotHttp=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS request not http).
-CORSMissingAllowOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
-CORSAllowOriginNotMatchingOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header 'Access-Control-Allow-Origin' does not match '%2$S').
-CORSMethodNotFound=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Did not find method in CORS header 'Access-Control-Allow-Methods').
-CORSMissingAllowCredentials=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials').
+CORSMissingAllowOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
+CORSAllowOriginNotMatchingOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘%2$S’).
+CORSMethodNotFound=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’).
+CORSMissingAllowCredentials=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: expected ‘true’ in CORS header ‘Access-Control-Allow-Credentials’).
CORSPreflightDidNotSucceed=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS preflight channel did not succeed).
-CORSInvalidAllowMethod=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: invalid token '%2$S' in CORS header 'Access-Control-Allow-Methods').
-CORSInvalidAllowHeader=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: invalid token '%2$S' in CORS header 'Access-Control-Allow-Headers').
-CORSMissingAllowHeaderFromPreflight=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: missing token '%2$S' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel).
+CORSInvalidAllowMethod=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: invalid token ‘%2$S’ in CORS header ‘Access-Control-Allow-Methods’).
+CORSInvalidAllowHeader=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: invalid token ‘%2$S’ in CORS header ‘Access-Control-Allow-Headers’).
+CORSMissingAllowHeaderFromPreflight=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: missing token ‘%2$S’ in CORS header ‘Access-Control-Allow-Headers’ from CORS preflight channel).
# LOCALIZATION NOTE: Do not translate "Strict-Transport-Security", "HSTS", "max-age" or "includeSubDomains"
STSUnknownError=Strict-Transport-Security: An unknown error occurred processing the header specified by the site.
STSUntrustworthyConnection=Strict-Transport-Security: The connection to the site is untrustworthy, so the specified header was ignored.
STSCouldNotParseHeader=Strict-Transport-Security: The site specified a header that could not be parsed successfully.
-STSNoMaxAge=Strict-Transport-Security: The site specified a header that did not include a 'max-age' directive.
-STSMultipleMaxAges=Strict-Transport-Security: The site specified a header that included multiple 'max-age' directives.
-STSInvalidMaxAge=Strict-Transport-Security: The site specified a header that included an invalid 'max-age' directive.
-STSMultipleIncludeSubdomains=Strict-Transport-Security: The site specified a header that included multiple 'includeSubDomains' directives.
-STSInvalidIncludeSubdomains=Strict-Transport-Security: The site specified a header that included an invalid 'includeSubDomains' directive.
+STSNoMaxAge=Strict-Transport-Security: The site specified a header that did not include a ‘max-age’ directive.
+STSMultipleMaxAges=Strict-Transport-Security: The site specified a header that included multiple ‘max-age’ directives.
+STSInvalidMaxAge=Strict-Transport-Security: The site specified a header that included an invalid ‘max-age’ directive.
+STSMultipleIncludeSubdomains=Strict-Transport-Security: The site specified a header that included multiple ‘includeSubDomains’ directives.
+STSInvalidIncludeSubdomains=Strict-Transport-Security: The site specified a header that included an invalid ‘includeSubDomains’ directive.
STSCouldNotSaveState=Strict-Transport-Security: An error occurred noting the site as a Strict-Transport-Security host.
# LOCALIZATION NOTE: Do not translate "Public-Key-Pins", "HPKP", "max-age", "report-uri" or "includeSubDomains"
PKPUnknownError=Public-Key-Pins: An unknown error occurred processing the header specified by the site.
PKPUntrustworthyConnection=Public-Key-Pins: The connection to the site is untrustworthy, so the specified header was ignored.
PKPCouldNotParseHeader=Public-Key-Pins: The site specified a header that could not be parsed successfully.
-PKPNoMaxAge=Public-Key-Pins: The site specified a header that did not include a 'max-age' directive.
-PKPMultipleMaxAges=Public-Key-Pins: The site specified a header that included multiple 'max-age' directives.
-PKPInvalidMaxAge=Public-Key-Pins: The site specified a header that included an invalid 'max-age' directive.
-PKPMultipleIncludeSubdomains=Public-Key-Pins: The site specified a header that included multiple 'includeSubDomains' directives.
-PKPInvalidIncludeSubdomains=Public-Key-Pins: The site specified a header that included an invalid 'includeSubDomains' directive.
+PKPNoMaxAge=Public-Key-Pins: The site specified a header that did not include a ‘max-age’ directive.
+PKPMultipleMaxAges=Public-Key-Pins: The site specified a header that included multiple ‘max-age’ directives.
+PKPInvalidMaxAge=Public-Key-Pins: The site specified a header that included an invalid ‘max-age’ directive.
+PKPMultipleIncludeSubdomains=Public-Key-Pins: The site specified a header that included multiple ‘includeSubDomains’ directives.
+PKPInvalidIncludeSubdomains=Public-Key-Pins: The site specified a header that included an invalid ‘includeSubDomains’ directive.
PKPInvalidPin=Public-Key-Pins: The site specified a header that included an invalid pin.
-PKPMultipleReportURIs=Public-Key-Pins: The site specified a header that included multiple 'report-uri' directives.
+PKPMultipleReportURIs=Public-Key-Pins: The site specified a header that included multiple ‘report-uri’ directives.
PKPPinsetDoesNotMatch=Public-Key-Pins: The site specified a header that did not include a matching pin.
PKPNoBackupPin=Public-Key-Pins: The site specified a header that did not include a backup pin.
PKPCouldNotSaveState=Public-Key-Pins: An error occurred noting the site as a Public-Key-Pins host.
PKPRootNotBuiltIn=Public-Key-Pins: The certificate used by the site was not issued by a certificate in the default root certificate store. To prevent accidental breakage, the specified header was ignored.
# LOCALIZATION NOTE: Do not translate "SHA-1"
-SHA1Sig=This site makes use of a SHA-1 Certificate; it's recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.
+SHA1Sig=This site makes use of a SHA-1 Certificate; it’s recommended you use certificates with signature algorithms that use hash functions stronger than SHA-1.
InsecurePasswordsPresentOnPage=Password fields present on an insecure (http://) page. This is a security risk that allows user login credentials to be stolen.
InsecureFormActionPasswordsPresent=Password fields present in a form with an insecure (http://) form action. This is a security risk that allows user login credentials to be stolen.
InsecurePasswordsPresentOnIframe=Password fields present on an insecure (http://) iframe. This is a security risk that allows user login credentials to be stolen.
# LOCALIZATION NOTE: "%1$S" is the URI of the insecure mixed content resource
-LoadingMixedActiveContent2=Loading mixed (insecure) active content "%1$S" on a secure page
-LoadingMixedDisplayContent2=Loading mixed (insecure) display content "%1$S" on a secure page
+LoadingMixedActiveContent2=Loading mixed (insecure) active content “%1$S” on a secure page
+LoadingMixedDisplayContent2=Loading mixed (insecure) display content “%1$S” on a secure page
# LOCALIZATION NOTE: Do not translate "allow-scripts", "allow-same-origin", "sandbox" or "iframe"
BothAllowScriptsAndSameOriginPresent=An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can remove its sandboxing.
# Sub-Resource Integrity
# LOCALIZATION NOTE: Do not translate "script" or "integrity". "%1$S" is the invalid token found in the attribute.
-MalformedIntegrityHash=The script element has a malformed hash in its integrity attribute: "%1$S". The correct format is "-".
+MalformedIntegrityHash=The script element has a malformed hash in its integrity attribute: “%1$S”. The correct format is “-”.
# LOCALIZATION NOTE: Do not translate "integrity"
InvalidIntegrityLength=The hash contained in the integrity attribute has the wrong length.
# LOCALIZATION NOTE: Do not translate "integrity"
InvalidIntegrityBase64=The hash contained in the integrity attribute could not be decoded.
# LOCALIZATION NOTE: Do not translate "integrity". "%1$S" is the type of hash algorigthm in use (e.g. "sha256").
-IntegrityMismatch=None of the "%1$S" hashes in the integrity attribute match the content of the subresource.
+IntegrityMismatch=None of the “%1$S” hashes in the integrity attribute match the content of the subresource.
# LOCALIZATION NOTE: "%1$S" is the URI of the sub-resource that cannot be protected using SRI.
-IneligibleResource="%1$S" is not eligible for integrity checks since it's neither CORS-enabled nor same-origin.
+IneligibleResource=“%1$S” is not eligible for integrity checks since it’s neither CORS-enabled nor same-origin.
# LOCALIZATION NOTE: Do not translate "integrity". "%1$S" is the invalid hash algorithm found in the attribute.
-UnsupportedHashAlg=Unsupported hash algorithm in the integrity attribute: "%1$S"
+UnsupportedHashAlg=Unsupported hash algorithm in the integrity attribute: “%1$S”
# LOCALIZATION NOTE: Do not translate "integrity"
NoValidMetadata=The integrity attribute does not contain any valid metadata.
diff --git a/dom/locales/en-US/chrome/xslt/xslt.properties b/dom/locales/en-US/chrome/xslt/xslt.properties
index c52c945a596e..5b26cd001213 100644
--- a/dom/locales/en-US/chrome/xslt/xslt.properties
+++ b/dom/locales/en-US/chrome/xslt/xslt.properties
@@ -16,16 +16,16 @@
12 = An XSLT stylesheet directly or indirectly imports or includes itself:
13 = An XPath function was called with the wrong number of arguments.
14 = An unknown XPath extension function was called.
-15 = XPath parse failure: ')' expected:
+15 = XPath parse failure: ‘)’ expected:
16 = XPath parse failure: invalid axis:
17 = XPath parse failure: Name or Nodetype test expected:
-18 = XPath parse failure: ']' expected:
+18 = XPath parse failure: ‘]’ expected:
19 = XPath parse failure: invalid variable name:
20 = XPath parse failure: unexpected end of expression:
21 = XPath parse failure: operator expected:
22 = XPath parse failure: unclosed literal:
-23 = XPath parse failure: ':' unexpected:
-24 = XPath parse failure: '!' unexpected, negation is not():
+23 = XPath parse failure: ‘:’ unexpected:
+24 = XPath parse failure: ‘!’ unexpected, negation is not():
25 = XPath parse failure: illegal character found:
26 = XPath parse failure: binary operator expected:
27 = An XSLT stylesheet load was blocked for security reasons.
diff --git a/dom/manifest/test/test_ManifestProcessor_warnings.html b/dom/manifest/test/test_ManifestProcessor_warnings.html
index e8190918b3e6..865ef8054ad2 100644
--- a/dom/manifest/test/test_ManifestProcessor_warnings.html
+++ b/dom/manifest/test/test_ManifestProcessor_warnings.html
@@ -59,7 +59,7 @@ ConsoleAPI.prototype.warn = function(aWarning) {
func: () => data.jsonText = JSON.stringify({
start_url: 42,
}),
- warning: 'Expected the manifest\'s start_url member to be a string.',
+ warning: 'Expected the manifest\u2019s start_url member to be a string.',
},
{
func: () => data.jsonText = JSON.stringify({
diff --git a/layout/style/test/test_bug413958.html b/layout/style/test/test_bug413958.html
index b7bbfe53ea0f..273e4466e272 100644
--- a/layout/style/test/test_bug413958.html
+++ b/layout/style/test/test_bug413958.html
@@ -40,19 +40,19 @@ var tests = [
},
];
var results = [
- [ { errorMessage: /Unknown property 'nosuchprop'/,
+ [ { errorMessage: /Unknown property \u2018nosuchprop\u2019/,
lineNumber: 1, columnNumber: 14,
sourceLine: "#s1{nosuchprop:auto; color:black}" },
- { errorMessage: /Unknown property 'nosuchprop'/,
+ { errorMessage: /Unknown property \u2018nosuchprop\u2019/,
lineNumber: 2, columnNumber: 14, sourceLine:
"#s2{nosuchprop:auto; color:black}invalid?sel{}#s3{color:black}" },
{ errorMessage: /Ruleset ignored due to bad selector/,
lineNumber: 2, columnNumber: 40, sourceLine:
"#s2{nosuchprop:auto; color:black}invalid?sel{}#s3{color:black}" } ],
- [ { errorMessage: /parsing value for 'width'/,
+ [ { errorMessage: /parsing value for \u2018width\u2019/,
lineNumber: 0, columnNumber: 6,
sourceLine: "width:200;color:black" } ],
- [ { errorMessage: /parsing value for 'width'/,
+ [ { errorMessage: /parsing value for \u2018width\u2019/,
lineNumber: 0, columnNumber: 0,
sourceLine: "200" } ],
];
diff --git a/layout/style/test/test_parser_diagnostics_unprintables.html b/layout/style/test/test_parser_diagnostics_unprintables.html
index 17c87f03bd6a..384d4dfa634e 100644
--- a/layout/style/test/test_parser_diagnostics_unprintables.html
+++ b/layout/style/test/test_parser_diagnostics_unprintables.html
@@ -26,26 +26,26 @@
const patterns = [
// REPORT_UNEXPECTED_P (only ever used in contexts where identifier-like
// escaping is appropriate)
- { i: "|x{}", o: "prefix ''" },
+ { i: "|x{}", o: "prefix \u2018\u2019" },
// REPORT_UNEXPECTED_TOKEN with:
// _Ident
- { i: "@namespace fnord ;", o: "within @namespace: ''" },
+ { i: "@namespace fnord ;", o: "within @namespace: \u2018\u2019" },
// _Ref
- { i: "@namespace fnord #;", o: "within @namespace: '#'" },
+ { i: "@namespace fnord #;", o: "within @namespace: \u2018#\u2019" },
// _Function
- { i: "@namespace fnord ();", o: "within @namespace: '('" },
+ { i: "@namespace fnord ();", o: "within @namespace: \u2018(\u2019" },
// _Dimension
- { i: "@namespace fnord 14;", o: "within @namespace: '14'" },
+ { i: "@namespace fnord 14;", o: "within @namespace: \u201814\u2019" },
// _AtKeyword
- { i: "x{@: }", o: "declaration but found '@'." },
+ { i: "x{@: }", o: "declaration but found \u2018@\u2019." },
// _String
- { i: "x{ ''}" , o: "declaration but found ''''." },
+ { i: "x{ ''}" , o: "declaration but found \u2018''\u2019." },
// _Bad_String
- { i: "x{ '\n}", o: "declaration but found '''." },
+ { i: "x{ '\n}", o: "declaration but found \u2018'\u2019." },
// _URL
- { i: "x{ url('')}", o: "declaration but found 'url('')'." },
+ { i: "x{ url('')}", o: "declaration but found \u2018url('')\u2019." },
// _Bad_URL
- { i: "x{ url(''.)}" , o: "declaration but found 'url('''." }
+ { i: "x{ url(''.)}" , o: "declaration but found \u2018url(''\u2019." }
];
// Blocks of characters to test, and how they should be escaped when
diff --git a/netwerk/locales/en-US/necko.properties b/netwerk/locales/en-US/necko.properties
index 3d21635734d8..f83f824d990c 100644
--- a/netwerk/locales/en-US/necko.properties
+++ b/netwerk/locales/en-US/necko.properties
@@ -33,16 +33,16 @@ DirColSize=Size
DirColMTime=Last Modified
DirFileLabel=File:
-PhishingAuth=You are about to visit "%1$S". This site may be attempting to trick you into thinking you are visiting a different site. Use extreme caution.
+PhishingAuth=You are about to visit “%1$S”. This site may be attempting to trick you into thinking you are visiting a different site. Use extreme caution.
PhishingAuthAccept=I understand and will be very careful
-SuperfluousAuth=You are about to log in to the site "%1$S" with the username "%2$S", but the website does not require authentication. This may be an attempt to trick you.\n\nIs "%1$S" the site you want to visit?
-AutomaticAuth=You are about to log in to the site "%1$S" with the username "%2$S".
+SuperfluousAuth=You are about to log in to the site “%1$S” with the username “%2$S”, but the website does not require authentication. This may be an attempt to trick you.\n\nIs “%1$S” the site you want to visit?
+AutomaticAuth=You are about to log in to the site “%1$S” with the username “%2$S”.
-TrackingUriBlocked=The resource at "%1$S" was blocked because tracking protection is enabled.
+TrackingUriBlocked=The resource at “%1$S” was blocked because tracking protection is enabled.
# LOCALIZATION NOTE (APIDeprecationWarning):
# %1$S is the deprected API; %2$S is the API function that should be used.
-APIDeprecationWarning=Warning: '%1$S' deprecated, please use '%2$S'
+APIDeprecationWarning=Warning: ‘%1$S’ deprecated, please use ‘%2$S’
# LOCALIZATION NOTE (nsICookieManagerRemoveDeprecated): don't localize nsICookieManager.remove() and originAttributes.
nsICookieManagerRemoveDeprecated=“nsICookieManager.remove()” is changed. Update your code and pass the correct originAttributes. Read more on MDN: https://developer.mozilla.org/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsICookieManager
diff --git a/security/manager/locales/en-US/chrome/pipnss/nsserrors.properties b/security/manager/locales/en-US/chrome/pipnss/nsserrors.properties
index 9bef566259b9..988a94bf9732 100644
--- a/security/manager/locales/en-US/chrome/pipnss/nsserrors.properties
+++ b/security/manager/locales/en-US/chrome/pipnss/nsserrors.properties
@@ -6,13 +6,13 @@ SSL_ERROR_EXPORT_ONLY_SERVER=Unable to communicate securely. Peer does not suppo
SSL_ERROR_US_ONLY_SERVER=Unable to communicate securely. Peer requires high-grade encryption which is not supported.
SSL_ERROR_NO_CYPHER_OVERLAP=Cannot communicate securely with peer: no common encryption algorithm(s).
SSL_ERROR_NO_CERTIFICATE=Unable to find the certificate or key necessary for authentication.
-SSL_ERROR_BAD_CERTIFICATE=Unable to communicate securely with peer: peers's certificate was rejected.
+SSL_ERROR_BAD_CERTIFICATE=Unable to communicate securely with peer: peers’s certificate was rejected.
SSL_ERROR_BAD_CLIENT=The server has encountered bad data from the client.
SSL_ERROR_BAD_SERVER=The client has encountered bad data from the server.
SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE=Unsupported certificate type.
SSL_ERROR_UNSUPPORTED_VERSION=Peer using unsupported version of security protocol.
SSL_ERROR_WRONG_CERTIFICATE=Client authentication failed: private key in key database does not match public key in certificate database.
-SSL_ERROR_BAD_CERT_DOMAIN=Unable to communicate securely with peer: requested domain name does not match the server's certificate.
+SSL_ERROR_BAD_CERT_DOMAIN=Unable to communicate securely with peer: requested domain name does not match the server’s certificate.
SSL_ERROR_POST_WARNING=Unrecognized SSL error code.
SSL_ERROR_SSL2_DISABLED=Peer only supports SSL version 2, which is locally disabled.
SSL_ERROR_BAD_MAC_READ=SSL received a record with an incorrect Message Authentication Code.
@@ -67,7 +67,7 @@ SSL_ERROR_UNSUPPORTED_CERT_ALERT=SSL peer does not support certificates of the t
SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT=SSL peer had some unspecified issue with the certificate it received.
SSL_ERROR_GENERATE_RANDOM_FAILURE=SSL experienced a failure of its random number generator.
SSL_ERROR_SIGN_HASHES_FAILURE=Unable to digitally sign data required to verify your certificate.
-SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE=SSL was unable to extract the public key from the peer's certificate.
+SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE=SSL was unable to extract the public key from the peer’s certificate.
SSL_ERROR_SERVER_KEY_EXCHANGE_FAILURE=Unspecified failure while processing SSL Server Key Exchange handshake.
SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE=Unspecified failure while processing SSL Client Key Exchange handshake.
SSL_ERROR_ENCRYPTION_FAILURE=Bulk data encryption algorithm failed in selected cipher suite.
@@ -90,7 +90,7 @@ SSL_ERROR_HANDSHAKE_NOT_COMPLETED=Cannot initiate another SSL handshake until cu
SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE=Received incorrect handshakes hash values from peer.
SSL_ERROR_CERT_KEA_MISMATCH=The certificate provided cannot be used with the selected key exchange algorithm.
SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA=No certificate authority is trusted for SSL client authentication.
-SSL_ERROR_SESSION_NOT_FOUND=Client's SSL session ID not found in server's session cache.
+SSL_ERROR_SESSION_NOT_FOUND=Client’s SSL session ID not found in server’s session cache.
SSL_ERROR_DECRYPTION_FAILED_ALERT=Peer was unable to decrypt an SSL record it received.
SSL_ERROR_RECORD_OVERFLOW_ALERT=Peer received an SSL record that was longer than is permitted.
SSL_ERROR_UNKNOWN_CA_ALERT=Peer does not recognize and trust the CA that issued your certificate.
@@ -148,29 +148,29 @@ SEC_ERROR_INVALID_ALGORITHM=security library: invalid algorithm.
SEC_ERROR_INVALID_AVA=security library: invalid AVA.
SEC_ERROR_INVALID_TIME=Improperly formatted time string.
SEC_ERROR_BAD_DER=security library: improperly formatted DER-encoded message.
-SEC_ERROR_BAD_SIGNATURE=Peer's certificate has an invalid signature.
-SEC_ERROR_EXPIRED_CERTIFICATE=Peer's Certificate has expired.
-SEC_ERROR_REVOKED_CERTIFICATE=Peer's Certificate has been revoked.
-SEC_ERROR_UNKNOWN_ISSUER=Peer's Certificate issuer is not recognized.
-SEC_ERROR_BAD_KEY=Peer's public key is invalid.
+SEC_ERROR_BAD_SIGNATURE=Peer’s certificate has an invalid signature.
+SEC_ERROR_EXPIRED_CERTIFICATE=Peer’s Certificate has expired.
+SEC_ERROR_REVOKED_CERTIFICATE=Peer’s Certificate has been revoked.
+SEC_ERROR_UNKNOWN_ISSUER=Peer’s Certificate issuer is not recognized.
+SEC_ERROR_BAD_KEY=Peer’s public key is invalid.
SEC_ERROR_BAD_PASSWORD=The security password entered is incorrect.
SEC_ERROR_RETRY_PASSWORD=New password entered incorrectly. Please try again.
SEC_ERROR_NO_NODELOCK=security library: no nodelock.
SEC_ERROR_BAD_DATABASE=security library: bad database.
SEC_ERROR_NO_MEMORY=security library: memory allocation failure.
-SEC_ERROR_UNTRUSTED_ISSUER=Peer's certificate issuer has been marked as not trusted by the user.
-SEC_ERROR_UNTRUSTED_CERT=Peer's certificate has been marked as not trusted by the user.
+SEC_ERROR_UNTRUSTED_ISSUER=Peer’s certificate issuer has been marked as not trusted by the user.
+SEC_ERROR_UNTRUSTED_CERT=Peer’s certificate has been marked as not trusted by the user.
SEC_ERROR_DUPLICATE_CERT=Certificate already exists in your database.
-SEC_ERROR_DUPLICATE_CERT_NAME=Downloaded certificate's name duplicates one already in your database.
+SEC_ERROR_DUPLICATE_CERT_NAME=Downloaded certificate’s name duplicates one already in your database.
SEC_ERROR_ADDING_CERT=Error adding certificate to database.
SEC_ERROR_FILING_KEY=Error refiling the key for this certificate.
SEC_ERROR_NO_KEY=The private key for this certificate cannot be found in key database
SEC_ERROR_CERT_VALID=This certificate is valid.
SEC_ERROR_CERT_NOT_VALID=This certificate is not valid.
SEC_ERROR_CERT_NO_RESPONSE=Cert Library: No Response
-SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE=The certificate issuer's certificate has expired. Check your system date and time.
-SEC_ERROR_CRL_EXPIRED=The CRL for the certificate's issuer has expired. Update it or check your system date and time.
-SEC_ERROR_CRL_BAD_SIGNATURE=The CRL for the certificate's issuer has an invalid signature.
+SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE=The certificate issuer’s certificate has expired. Check your system date and time.
+SEC_ERROR_CRL_EXPIRED=The CRL for the certificate’s issuer has expired. Update it or check your system date and time.
+SEC_ERROR_CRL_BAD_SIGNATURE=The CRL for the certificate’s issuer has an invalid signature.
SEC_ERROR_CRL_INVALID=New CRL has an invalid format.
SEC_ERROR_EXTENSION_VALUE_INVALID=Certificate extension value is invalid.
SEC_ERROR_EXTENSION_NOT_FOUND=Certificate extension not found.
@@ -195,11 +195,11 @@ XP_SEC_FORTEZZA_MORE_INFO=Please select a personality to get more info on
XP_SEC_FORTEZZA_PERSON_NOT_FOUND=Personality not found
XP_SEC_FORTEZZA_NO_MORE_INFO=No more information on that Personality
XP_SEC_FORTEZZA_BAD_PIN=Invalid Pin
-XP_SEC_FORTEZZA_PERSON_ERROR=Couldn't initialize Fortezza personalities.
-SEC_ERROR_NO_KRL=No KRL for this site's certificate has been found.
-SEC_ERROR_KRL_EXPIRED=The KRL for this site's certificate has expired.
-SEC_ERROR_KRL_BAD_SIGNATURE=The KRL for this site's certificate has an invalid signature.
-SEC_ERROR_REVOKED_KEY=The key for this site's certificate has been revoked.
+XP_SEC_FORTEZZA_PERSON_ERROR=Couldn’t initialize Fortezza personalities.
+SEC_ERROR_NO_KRL=No KRL for this site’s certificate has been found.
+SEC_ERROR_KRL_EXPIRED=The KRL for this site’s certificate has expired.
+SEC_ERROR_KRL_BAD_SIGNATURE=The KRL for this site’s certificate has an invalid signature.
+SEC_ERROR_REVOKED_KEY=The key for this site’s certificate has been revoked.
SEC_ERROR_KRL_INVALID=New KRL has an invalid format.
SEC_ERROR_NEED_RANDOM=security library: need random data.
SEC_ERROR_NO_MODULE=security library: no security module can perform the requested operation.
@@ -210,9 +210,9 @@ SEC_ERROR_CERT_NICKNAME_COLLISION=A certificate with the same nickname already e
SEC_ERROR_KEY_NICKNAME_COLLISION=A key with the same nickname already exists.
SEC_ERROR_SAFE_NOT_CREATED=error while creating safe object
SEC_ERROR_BAGGAGE_NOT_CREATED=error while creating baggage object
-XP_JAVA_REMOVE_PRINCIPAL_ERROR=Couldn't remove the principal
-XP_JAVA_DELETE_PRIVILEGE_ERROR=Couldn't delete the privilege
-XP_JAVA_CERT_NOT_EXISTS_ERROR=This principal doesn't have a certificate
+XP_JAVA_REMOVE_PRINCIPAL_ERROR=Couldn’t remove the principal
+XP_JAVA_DELETE_PRIVILEGE_ERROR=Couldn’t delete the privilege
+XP_JAVA_CERT_NOT_EXISTS_ERROR=This principal doesn’t have a certificate
SEC_ERROR_BAD_EXPORT_ALGORITHM=Required algorithm is not allowed.
SEC_ERROR_EXPORTING_CERTIFICATES=Error attempting to export certificates.
SEC_ERROR_IMPORTING_CERTIFICATES=Error attempting to import certificates.
@@ -254,7 +254,7 @@ SEC_ERROR_CERT_NOT_IN_NAME_SPACE=The Certifying Authority for this certificate i
SEC_ERROR_KRL_NOT_YET_VALID=The key revocation list for this certificate is not yet valid.
SEC_ERROR_CRL_NOT_YET_VALID=The certificate revocation list for this certificate is not yet valid.
SEC_ERROR_UNKNOWN_CERT=The requested certificate could not be found.
-SEC_ERROR_UNKNOWN_SIGNER=The signer's certificate could not be found.
+SEC_ERROR_UNKNOWN_SIGNER=The signer’s certificate could not be found.
SEC_ERROR_CERT_BAD_ACCESS_LOCATION=The location for the certificate status server has invalid format.
SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE=The OCSP response cannot be fully decoded; it is of an unknown type.
SEC_ERROR_OCSP_BAD_HTTP_RESPONSE=The OCSP server returned unexpected/invalid HTTP data.
@@ -283,18 +283,18 @@ SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE=Unsupported elliptic curve.
SEC_ERROR_UNSUPPORTED_EC_POINT_FORM=Unsupported elliptic curve point form.
SEC_ERROR_UNRECOGNIZED_OID=Unrecognized Object Identifier.
SEC_ERROR_OCSP_INVALID_SIGNING_CERT=Invalid OCSP signing certificate in OCSP response.
-SEC_ERROR_REVOKED_CERTIFICATE_CRL=Certificate is revoked in issuer's certificate revocation list.
-SEC_ERROR_REVOKED_CERTIFICATE_OCSP=Issuer's OCSP responder reports certificate is revoked.
-SEC_ERROR_CRL_INVALID_VERSION=Issuer's Certificate Revocation List has an unknown version number.
-SEC_ERROR_CRL_V1_CRITICAL_EXTENSION=Issuer's V1 Certificate Revocation List has a critical extension.
-SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION=Issuer's V2 Certificate Revocation List has an unknown critical extension.
+SEC_ERROR_REVOKED_CERTIFICATE_CRL=Certificate is revoked in issuer’s certificate revocation list.
+SEC_ERROR_REVOKED_CERTIFICATE_OCSP=Issuer’s OCSP responder reports certificate is revoked.
+SEC_ERROR_CRL_INVALID_VERSION=Issuer’s Certificate Revocation List has an unknown version number.
+SEC_ERROR_CRL_V1_CRITICAL_EXTENSION=Issuer’s V1 Certificate Revocation List has a critical extension.
+SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION=Issuer’s V2 Certificate Revocation List has an unknown critical extension.
SEC_ERROR_UNKNOWN_OBJECT_TYPE=Unknown object type specified.
SEC_ERROR_INCOMPATIBLE_PKCS11=PKCS #11 driver violates the spec in an incompatible way.
SEC_ERROR_NO_EVENT=No new slot event is available at this time.
SEC_ERROR_CRL_ALREADY_EXISTS=CRL already exists.
SEC_ERROR_NOT_INITIALIZED=NSS is not initialized.
SEC_ERROR_TOKEN_NOT_LOGGED_IN=The operation failed because the PKCS#11 token is not logged in.
-SEC_ERROR_OCSP_RESPONDER_CERT_INVALID=Configured OCSP responder's certificate is invalid.
+SEC_ERROR_OCSP_RESPONDER_CERT_INVALID=Configured OCSP responder’s certificate is invalid.
SEC_ERROR_OCSP_BAD_SIGNATURE=OCSP response has an invalid signature.
SEC_ERROR_OUT_OF_SEARCH_LIMITS=Cert validation search is out of search limits
SEC_ERROR_INVALID_POLICY_MAPPING=Policy mapping contains anypolicy
@@ -318,9 +318,9 @@ SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED=The certificate was signed using a s
MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE=The server uses key pinning (HPKP) but no trusted certificate chain could be constructed that matches the pinset. Key pinning violations cannot be overridden.
MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY=The server uses a certificate with a basic constraints extension identifying it as a certificate authority. For a properly-issued certificate, this should not be the case.
MOZILLA_PKIX_ERROR_INADEQUATE_KEY_SIZE=The server presented a certificate with a key size that is too small to establish a secure connection.
-MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA=An X.509 version 1 certificate that is not a trust anchor was used to issue the server's certificate. X.509 version 1 certificates are deprecated and should not be used to sign other certificates.
+MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA=An X.509 version 1 certificate that is not a trust anchor was used to issue the server’s certificate. X.509 version 1 certificates are deprecated and should not be used to sign other certificates.
MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE=The server presented a certificate that is not yet valid.
-MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE=A certificate that is not yet valid was used to issue the server's certificate.
+MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE=A certificate that is not yet valid was used to issue the server’s certificate.
MOZILLA_PKIX_ERROR_SIGNATURE_ALGORITHM_MISMATCH=The signature algorithm in the signature field of the certificate does not match the algorithm in its signatureAlgorithm field.
MOZILLA_PKIX_ERROR_OCSP_RESPONSE_FOR_CERT_MISSING=The OCSP response does not include a status for the certificate being verified.
MOZILLA_PKIX_ERROR_VALIDITY_TOO_LONG=The server presented a certificate that is valid for too long.
diff --git a/security/manager/locales/en-US/chrome/pipnss/pipnss.properties b/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
index e4194cb1e819..c92680a2abb9 100755
--- a/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
+++ b/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
@@ -49,7 +49,7 @@ VerifyStatusResponder=Status Responder Certificate
HighGrade=High Grade
MediumGrade=Medium Grade
# LOCALIZATION NOTE (nick_template): $1s is the common name from a cert (e.g. "Mozilla"), $2s is the CA name (e.g. VeriSign)
-nick_template=%1$s's %2$s ID
+nick_template=%1$s’s %2$s ID
#These are the strings set for the ASN1 objects in a certificate.
CertDumpCertificate=Certificate
CertDumpVersion=Version
@@ -89,7 +89,7 @@ CertDumpRSAPSSSignature=PKCS #1 RSASSA-PSS Signature
CertDumpRSATemplate=Modulus (%S bits):\n%S\nExponent (%S bits):\n%S
CertDumpECTemplate=Key size: %S bits\nBase point order length: %S bits\nPublic value:\n%S
CertDumpIssuerUniqueID=Issuer Unique ID
-CertDumpSubjPubKey=Subject's Public Key
+CertDumpSubjPubKey=Subject’s Public Key
CertDumpSubjectUniqueID=Subject Unique ID
CertDumpExtensions=Extensions
CertDumpSubjectDirectoryAttr=Certificate Subject Directory Attributes
@@ -261,8 +261,8 @@ DelModuleWarning=Are you sure you want to delete this security module?
DelModuleError=Unable to delete module
AVATemplate=%S = %S
-PSMERR_SSL_Disabled=Can't connect securely because the SSL protocol has been disabled.
-PSMERR_SSL2_Disabled=Can't connect securely because the site uses an older, insecure version of the SSL protocol.
+PSMERR_SSL_Disabled=Can’t connect securely because the SSL protocol has been disabled.
+PSMERR_SSL2_Disabled=Can’t connect securely because the site uses an older, insecure version of the SSL protocol.
PSMERR_HostReusedIssuerSerial=You have received an invalid certificate. Please contact the server administrator or email correspondent and give them the following information:\n\nYour certificate contains the same serial number as another certificate issued by the certificate authority. Please get a new certificate containing a unique serial number.
SSLConnectionErrorPrefix=An error occurred during a connection to %S.
@@ -320,9 +320,9 @@ CertNoEmailAddress=(no email address)
NicknameExpired=(expired)
NicknameNotYetValid=(not yet valid)
CaCertExists=This certificate is already installed as a certificate authority.
-NotACACert=This is not a certificate authority certificate, so it can't be imported into the certificate authority list.
-NotImportingUnverifiedCert=This certificate can't be verified and will not be imported. The certificate issuer might be unknown or untrusted, the certificate might have expired or been revoked, or the certificate might not have been approved.
-UserCertIgnoredNoPrivateKey=This personal certificate can't be installed because you do not own the corresponding private key which was created when the certificate was requested.
+NotACACert=This is not a certificate authority certificate, so it can’t be imported into the certificate authority list.
+NotImportingUnverifiedCert=This certificate can’t be verified and will not be imported. The certificate issuer might be unknown or untrusted, the certificate might have expired or been revoked, or the certificate might not have been approved.
+UserCertIgnoredNoPrivateKey=This personal certificate can’t be installed because you do not own the corresponding private key which was created when the certificate was requested.
UserCertImported=Your personal certificate has been installed. You should keep a backup copy of this certificate.
CertOrgUnknown=(Unknown)
CertNotStored=(Not Stored)
diff --git a/security/manager/locales/en-US/chrome/pippki/pippki.properties b/security/manager/locales/en-US/chrome/pippki/pippki.properties
index d2aaf5ee2c65..10f823f50d49 100644
--- a/security/manager/locales/en-US/chrome/pippki/pippki.properties
+++ b/security/manager/locales/en-US/chrome/pippki/pippki.properties
@@ -7,11 +7,11 @@ CertPassPrompt=Please enter the Personal Security Password for the PSM Private K
#These are for dialogs
#Download Cert dialog
-newCAMessage1=Do you want to trust "%S" for the following purposes?
+newCAMessage1=Do you want to trust “%S” for the following purposes?
unnamedCA=Certificate Authority (unnamed)
#For editing cert trust
-editTrustCA=The certificate "%S" represents a Certificate Authority.
+editTrustCA=The certificate “%S” represents a Certificate Authority.
#For Deleting Certificates
deleteSslCertConfirm3=Are you sure you want to delete these server exceptions?
@@ -26,8 +26,8 @@ deleteCaCertConfirm2=You have requested to delete these CA certificates. For bui
deleteCaCertImpactX2=If you delete or distrust a certificate authority (CA) certificate, this application will no longer trust any certificates issued by that CA.
deleteCaCertTitle2=Delete or Distrust CA Certificates
-deleteEmailCertConfirm=Are you sure you want to delete these people's e-mail certificates?
-deleteEmailCertImpactDesc=If you delete a person's e-mail certificate, you will no longer be able to send encrypted e-mail to that person.
+deleteEmailCertConfirm=Are you sure you want to delete these people’s e-mail certificates?
+deleteEmailCertImpactDesc=If you delete a person’s e-mail certificate, you will no longer be able to send encrypted e-mail to that person.
deleteEmailCertTitle=Delete E-Mail Certificates
deleteOrphanCertConfirm=Are you sure you want to delete these certificates?
@@ -52,8 +52,8 @@ certNotVerified_AlgorithmDisabled=Could not verify this certificate because it w
certNotVerified_Unknown=Could not verify this certificate for unknown reasons.
#Client auth
-clientAuthMessage1=Organization: "%S"
-clientAuthMessage2=Issued Under: "%S"
+clientAuthMessage1=Organization: “%S”
+clientAuthMessage2=Issued Under: “%S”
#Page Info
pageInfo_NoEncryption=Connection Not Encrypted
@@ -70,7 +70,7 @@ pageInfo_Privacy_Encrypted1=The page you are viewing was encrypted before being
pageInfo_Privacy_Encrypted2=Encryption makes it difficult for unauthorized people to view information traveling between computers. It is therefore unlikely that anyone read this page as it traveled across the network.
pageInfo_MixedContent=Connection Partially Encrypted
pageInfo_MixedContent2=Parts of the page you are viewing were not encrypted before being transmitted over the Internet.
-pageInfo_WeakCipher=Your connection to this website uses weak encryption and is not private. Other people can view your information or modify the website's behavior.
+pageInfo_WeakCipher=Your connection to this website uses weak encryption and is not private. Other people can view your information or modify the website’s behavior.
#Cert Viewer
certDetails=Certificate Viewer:
@@ -111,7 +111,7 @@ resetPasswordConfirmationTitle=Reset Master Password
resetPasswordConfirmationMessage=Your password has been reset.
# Import certificate(s) file dialog
-importEmailCertPrompt=Select File containing somebody's Email certificate to import
+importEmailCertPrompt=Select File containing somebody’s Email certificate to import
importCACertsPrompt=Select File containing CA certificate(s) to import
file_browse_Certificate_spec=Certificate Files
@@ -123,7 +123,7 @@ CertFormatDER=X.509 Certificate (DER)
CertFormatPKCS7=X.509 Certificate (PKCS#7)
CertFormatPKCS7Chain=X.509 Certificate with chain (PKCS#7)
writeFileFailure=File Error
-writeFileFailed=Can't write to file %S:\n%S.
+writeFileFailed=Can’t write to file %S:\n%S.
writeFileAccessDenied=Access denied
writeFileIsLocked=File is locked
writeFileNoDeviceSpace=No space left on device
@@ -137,7 +137,7 @@ addExceptionDomainMismatchLong2=The certificate belongs to a different site, whi
addExceptionExpiredShort=Outdated Information
addExceptionExpiredLong2=The certificate is not currently valid. It may have been stolen or lost, and could be used by someone to impersonate this site.
addExceptionUnverifiedOrBadSignatureShort=Unknown Identity
-addExceptionUnverifiedOrBadSignatureLong2=The certificate is not trusted because it hasn't been verified as issued by a trusted authority using a secure signature.
+addExceptionUnverifiedOrBadSignatureLong2=The certificate is not trusted because it hasn’t been verified as issued by a trusted authority using a secure signature.
addExceptionValidShort=Valid Certificate
addExceptionValidLong=This site provides valid, verified identification. There is no need to add an exception.
addExceptionCheckingShort=Checking Information
diff --git a/services/sync/locales/en-US/errors.properties b/services/sync/locales/en-US/errors.properties
index 237e571763db..3dfa074bc8ea 100644
--- a/services/sync/locales/en-US/errors.properties
+++ b/services/sync/locales/en-US/errors.properties
@@ -20,8 +20,8 @@ weak-password = Use a stronger password
# this is the fallback, if we hit an error we didn't bother to localize
error.reason.unknown = Unknown error
-change.password.pwSameAsPassword = Password can't match current password
-change.password.pwSameAsUsername = Password can't match your user name
-change.password.pwSameAsEmail = Password can't match your email address
+change.password.pwSameAsPassword = Password can’t match current password
+change.password.pwSameAsUsername = Password can’t match your user name
+change.password.pwSameAsEmail = Password can’t match your email address
change.password.mismatch = The passwords entered do not match
change.password.tooShort = The password entered is too short
diff --git a/services/sync/locales/en-US/sync.properties b/services/sync/locales/en-US/sync.properties
index 23b71916c830..3d83ac94488d 100644
--- a/services/sync/locales/en-US/sync.properties
+++ b/services/sync/locales/en-US/sync.properties
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# %1: the user name (Ed), %2: the app name (Firefox), %3: the operating system (Android)
-client.name2 = %1$S's %2$S on %3$S
+client.name2 = %1$S’s %2$S on %3$S
# %S is the date and time at which the last sync successfully completed
lastSync2.label = Last sync: %S
diff --git a/toolkit/components/prompts/test/test_modal_prompts.html b/toolkit/components/prompts/test/test_modal_prompts.html
index 7fb2bc6f9344..f8124f2af4a3 100644
--- a/toolkit/components/prompts/test/test_modal_prompts.html
+++ b/toolkit/components/prompts/test/test_modal_prompts.html
@@ -1026,9 +1026,9 @@ function* runTests() {
info("Starting test: promptAuth with long realm");
state = {
msg : 'A username and password are being requested by http://example.com. The site ' +
- 'says: "abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ' +
+ 'says: \u201cabcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ' +
'abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ' +
- 'abcdefghi \u2026"',
+ 'abcdefghi \u2026\u201d',
title : "TestTitle",
iconClass : "authentication-icon question-icon",
titleHidden : true,
diff --git a/toolkit/locales/en-US/chrome/global/aboutProfiles.properties b/toolkit/locales/en-US/chrome/global/aboutProfiles.properties
index 13a4aca7ed8b..d653f92ba08f 100644
--- a/toolkit/locales/en-US/chrome/global/aboutProfiles.properties
+++ b/toolkit/locales/en-US/chrome/global/aboutProfiles.properties
@@ -26,12 +26,12 @@ renameProfileTitle = Rename Profile
renameProfile = Rename profile %S
invalidProfileNameTitle = Invalid profile name
-invalidProfileName = The profile name "%S" is not allowed.
+invalidProfileName = The profile name “%S” is not allowed.
deleteProfileTitle = Delete Profile
-deleteProfileConfirm = Deleting a profile will remove the profile from the list of available profiles and cannot be undone.\nYou may also choose to delete the profile data files, including your settings, certificates and other user-related data. This option will delete the folder "%S" and cannot be undone.\nWould you like to delete the profile data files?
+deleteProfileConfirm = Deleting a profile will remove the profile from the list of available profiles and cannot be undone.\nYou may also choose to delete the profile data files, including your settings, certificates and other user-related data. This option will delete the folder “%S” and cannot be undone.\nWould you like to delete the profile data files?
deleteFiles = Delete Files
-dontDeleteFiles = Don't Delete Files
+dontDeleteFiles = Don’t Delete Files
openDir = Open Directory
# LOCALIZATION NOTE (macOpenDir): This is the Mac-specific variant of openDir.
diff --git a/toolkit/locales/en-US/chrome/global/aboutSupport.dtd b/toolkit/locales/en-US/chrome/global/aboutSupport.dtd
index af602b2864db..db74e91301b2 100644
--- a/toolkit/locales/en-US/chrome/global/aboutSupport.dtd
+++ b/toolkit/locales/en-US/chrome/global/aboutSupport.dtd
@@ -6,7 +6,7 @@
support website.
">
diff --git a/toolkit/locales/en-US/chrome/global/commonDialogs.properties b/toolkit/locales/en-US/chrome/global/commonDialogs.properties
index 9b9046a8d611..3d0956b8c68c 100644
--- a/toolkit/locales/en-US/chrome/global/commonDialogs.properties
+++ b/toolkit/locales/en-US/chrome/global/commonDialogs.properties
@@ -15,7 +15,7 @@ Yes=&Yes
No=&No
Save=&Save
Revert=&Revert
-DontSave=Do&n't Save
+DontSave=Do&n’t Save
ScriptDlgGenericHeading=[JavaScript Application]
ScriptDlgHeading=The page at %S says:
ScriptDialogLabel=Prevent this page from creating additional dialogs
@@ -25,7 +25,7 @@ ScriptDialogPreventTitle=Confirm Dialog Preference
# take advantage of sentence structure in order to mislead the user (see
# bug 244273). %1 should be integrated into the translated sentences as
# little as possible. %2 is the url of the site being accessed.
-EnterLoginForRealm=A username and password are being requested by %2$S. The site says: "%1$S"
-EnterLoginForProxy=The proxy %2$S is requesting a username and password. The site says: "%1$S"
+EnterLoginForRealm=A username and password are being requested by %2$S. The site says: “%1$S”
+EnterLoginForProxy=The proxy %2$S is requesting a username and password. The site says: “%1$S”
EnterUserPasswordFor=Enter username and password for %1$S
EnterPasswordFor=Enter password for %1$S on %2$S
diff --git a/toolkit/locales/en-US/chrome/global/console.properties b/toolkit/locales/en-US/chrome/global/console.properties
index a51977ecd275..a17a250b38a4 100644
--- a/toolkit/locales/en-US/chrome/global/console.properties
+++ b/toolkit/locales/en-US/chrome/global/console.properties
@@ -14,4 +14,4 @@ errTime=Timestamp: %S
# LOCALIZATION NOTE (evaluationContextChanged): The message displayed when the
# browser console's evaluation context (window against which input is evaluated)
# changes.
-evaluationContextChanged=The console's evaluation context changed, probably because the target window was closed or because you opened a main window from the browser console's window.
+evaluationContextChanged=The console’s evaluation context changed, probably because the target window was closed or because you opened a main window from the browser console’s window.
diff --git a/toolkit/locales/en-US/chrome/global/customizeToolbar.properties b/toolkit/locales/en-US/chrome/global/customizeToolbar.properties
index 8cad3d59ddf8..0ec6d2c1dbd2 100644
--- a/toolkit/locales/en-US/chrome/global/customizeToolbar.properties
+++ b/toolkit/locales/en-US/chrome/global/customizeToolbar.properties
@@ -4,7 +4,7 @@
enterToolbarTitle=New Toolbar
enterToolbarName=Enter a name for this toolbar:
-enterToolbarDup=There is already a toolbar with the name "%S". Please enter a different name.
+enterToolbarDup=There is already a toolbar with the name “%S”. Please enter a different name.
enterToolbarBlank=You must enter a name to create a new toolbar.
separatorTitle=Separator
springTitle=Flexible Space
diff --git a/toolkit/locales/en-US/chrome/global/extensions.properties b/toolkit/locales/en-US/chrome/global/extensions.properties
index f0fc7cd1ffe8..13478cd824bf 100644
--- a/toolkit/locales/en-US/chrome/global/extensions.properties
+++ b/toolkit/locales/en-US/chrome/global/extensions.properties
@@ -1,12 +1,12 @@
-csp.error.missing-directive = Policy is missing a required '%S' directive
+csp.error.missing-directive = Policy is missing a required ‘%S’ directive
-csp.error.illegal-keyword = '%1$S' directive contains a forbidden %2$S keyword
+csp.error.illegal-keyword = ‘%1$S’ directive contains a forbidden %2$S keyword
-csp.error.illegal-protocol = '%1$S' directive contains a forbidden %2$S: protocol source
+csp.error.illegal-protocol = ‘%1$S’ directive contains a forbidden %2$S: protocol source
-csp.error.missing-host = %2$S: protocol requires a host in '%1$S' directives
+csp.error.missing-host = %2$S: protocol requires a host in ‘%1$S’ directives
-csp.error.missing-source = '%1$S' must include the source %2$S
+csp.error.missing-source = ‘%1$S’ must include the source %2$S
-csp.error.illegal-host-wildcard = %2$S: wildcard sources in '%1$S' directives must include at least one non-generic sub-domain (e.g., *.example.com rather than *.com)
+csp.error.illegal-host-wildcard = %2$S: wildcard sources in ‘%1$S’ directives must include at least one non-generic sub-domain (e.g., *.example.com rather than *.com)
diff --git a/toolkit/locales/en-US/chrome/global/filepicker.properties b/toolkit/locales/en-US/chrome/global/filepicker.properties
index 0110a922eb81..69b0b1ca3e62 100644
--- a/toolkit/locales/en-US/chrome/global/filepicker.properties
+++ b/toolkit/locales/en-US/chrome/global/filepicker.properties
@@ -26,16 +26,16 @@ noButtonLabel=No
formatLabel=Format:
errorOpenFileDoesntExistTitle=Error opening %S
-errorOpenFileDoesntExistMessage=File %S doesn't exist
+errorOpenFileDoesntExistMessage=File %S doesn’t exist
errorDirDoesntExistTitle=Error accessing %S
-errorDirDoesntExistMessage=Directory %S doesn't exist
+errorDirDoesntExistMessage=Directory %S doesn’t exist
errorOpeningFileTitle=Error opening %S
openWithoutPermissionMessage_file=File %S is not readable
errorSavingFileTitle=Error saving %S
-saveParentIsFileMessage=%S is a file, can't save %S
-saveParentDoesntExistMessage=Path %S doesn't exist, can't save %S
+saveParentIsFileMessage=%S is a file, can’t save %S
+saveParentDoesntExistMessage=Path %S doesn’t exist, can’t save %S
saveWithoutPermissionMessage_file=File %S is not writable.
saveWithoutPermissionMessage_dir=Cannot create file. Directory %S is not writable.
diff --git a/toolkit/locales/en-US/chrome/global/printdialog.properties b/toolkit/locales/en-US/chrome/global/printdialog.properties
index 06098267255c..ae583eda598c 100644
--- a/toolkit/locales/en-US/chrome/global/printdialog.properties
+++ b/toolkit/locales/en-US/chrome/global/printdialog.properties
@@ -47,7 +47,7 @@ headerFooterURL=URL
headerFooterDate=Date/Time
headerFooterPage=Page #
headerFooterPageTotal=Page # of #
-headerFooterCustom=Custom...
+headerFooterCustom=Custom…
customHeaderFooterPrompt=Please enter your custom header/footer text
# These are for the summary view in the Mac dialog:
diff --git a/toolkit/locales/en-US/chrome/global/resetProfile.properties b/toolkit/locales/en-US/chrome/global/resetProfile.properties
index 035b9b54fe51..c0600729901d 100644
--- a/toolkit/locales/en-US/chrome/global/resetProfile.properties
+++ b/toolkit/locales/en-US/chrome/global/resetProfile.properties
@@ -5,7 +5,7 @@
# LOCALIZATION NOTE: These strings are used for profile reset.
# LOCALIZATION NOTE (resetUnusedProfile.message): %S is brandShortName.
-resetUnusedProfile.message=It looks like you haven't started %S in a while. Do you want to clean it up for a fresh, like-new experience? And by the way, welcome back!
+resetUnusedProfile.message=It looks like you haven’t started %S in a while. Do you want to clean it up for a fresh, like-new experience? And by the way, welcome back!
# LOCALIZATION NOTE (resetUninstalled.message): %S is brandShortName.
resetUninstalled.message=Looks like you’ve reinstalled %S. Want us to clean it up for a fresh, like-new experience?
diff --git a/toolkit/locales/en-US/chrome/global/videocontrols.dtd b/toolkit/locales/en-US/chrome/global/videocontrols.dtd
index 0ea0ba316f65..d59f9c1ba54a 100644
--- a/toolkit/locales/en-US/chrome/global/videocontrols.dtd
+++ b/toolkit/locales/en-US/chrome/global/videocontrols.dtd
@@ -25,7 +25,7 @@
-
+
diff --git a/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties b/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties
index be9def58662e..3a50d17f3a7d 100644
--- a/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/downloads/downloads.properties
@@ -36,8 +36,8 @@ leavePrivateBrowsingWindowsCancelDownloadsAlertMsg2=If you close all Private Bro
leavePrivateBrowsingWindowsCancelDownloadsAlertMsgMultiple2=If you close all Private Browsing windows now, %S downloads will be canceled. Are you sure you want to leave Private Browsing?
cancelDownloadsOKText=Cancel 1 Download
cancelDownloadsOKTextMultiple=Cancel %S Downloads
-dontQuitButtonWin=Don't Exit
-dontQuitButtonMac=Don't Quit
+dontQuitButtonWin=Don’t Exit
+dontQuitButtonMac=Don’t Quit
dontGoOfflineButton=Stay Online
dontLeavePrivateBrowsingButton2=Stay in Private Browsing
downloadsCompleteTitle=Downloads Complete
@@ -132,9 +132,9 @@ chooseAppFilePickerTitle=Open With…
downloadsTitleFiles=#1 file - Downloads;#1 files - Downloads
downloadsTitlePercent=#2% of #1 file - Downloads;#2% of #1 files - Downloads
-fileExecutableSecurityWarning="%S" is an executable file. Executable files may contain viruses or other malicious code that could harm your computer. Use caution when opening this file. Are you sure you want to launch "%S"?
+fileExecutableSecurityWarning=“%S” is an executable file. Executable files may contain viruses or other malicious code that could harm your computer. Use caution when opening this file. Are you sure you want to launch “%S”?
fileExecutableSecurityWarningTitle=Open Executable File?
-fileExecutableSecurityWarningDontAsk=Don't ask me this again
+fileExecutableSecurityWarningDontAsk=Don’t ask me this again
displayNameDesktop=Desktop
diff --git a/toolkit/locales/en-US/chrome/mozapps/downloads/unknownContentType.properties b/toolkit/locales/en-US/chrome/mozapps/downloads/unknownContentType.properties
index 332fc2e0e2df..e599133cef1d 100644
--- a/toolkit/locales/en-US/chrome/mozapps/downloads/unknownContentType.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/downloads/unknownContentType.properties
@@ -7,7 +7,7 @@ title=Opening %S
saveDialogTitle=Enter name of file to save to…
defaultApp=%S (default)
chooseAppFilePickerTitle=Choose Helper Application
-badApp=The application you chose ("%S") could not be found. Check the file name or choose another application.
+badApp=The application you chose (“%S”) could not be found. Check the file name or choose another application.
badApp.title=Application not found
badPermissions=The file could not be saved because you do not have the proper permissions. Choose another save directory.
badPermissions.title=Invalid Save Permissions
diff --git a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
index 68e295ae4f2c..e0084a53da6f 100644
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
@@ -10,9 +10,9 @@
-
+
-
+
@@ -108,9 +108,9 @@
-
+
-
+
@@ -127,7 +127,7 @@
-
@@ -141,11 +141,11 @@
-
+
-
+
@@ -155,10 +155,10 @@
-
+
-
+
@@ -228,7 +228,7 @@
This tab won't be displayed unless an Experiment add-on is installed.
Install https://people.mozilla.org/~gszorc/dummy-experiment-addon.xpi
to cause this tab to appear. -->
-
+
diff --git a/toolkit/locales/en-US/chrome/mozapps/extensions/update.dtd b/toolkit/locales/en-US/chrome/mozapps/extensions/update.dtd
index 6c820e088eda..6dd64a9c6f33 100644
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/update.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/update.dtd
@@ -23,7 +23,7 @@
-
diff --git a/toolkit/locales/en-US/chrome/mozapps/extensions/update.properties b/toolkit/locales/en-US/chrome/mozapps/extensions/update.properties
index 7cf79f9c11ed..c2d4ed90fc75 100644
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/update.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/update.properties
@@ -4,7 +4,7 @@
mismatchCheckNow=Check Now
mismatchCheckNowAccesskey=C
-mismatchDontCheck=Don't Check
+mismatchDontCheck=Don’t Check
mismatchDontCheckAccesskey=D
installButtonText=Install Now
installButtonTextAccesskey=I
diff --git a/toolkit/locales/en-US/chrome/mozapps/handling/handling.properties b/toolkit/locales/en-US/chrome/mozapps/handling/handling.properties
index e8a81ceeb707..46d347ad054c 100644
--- a/toolkit/locales/en-US/chrome/mozapps/handling/handling.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/handling/handling.properties
@@ -7,6 +7,6 @@ protocol.description=This link needs to be opened with an application.
protocol.choices.label=Send to:
protocol.checkbox.label=Remember my choice for %S links.
protocol.checkbox.accesskey=R
-protocol.checkbox.extra=This can be changed in %S's preferences.
+protocol.checkbox.extra=This can be changed in %S’s preferences.
choose.application.title=Another Application…
diff --git a/toolkit/locales/en-US/chrome/mozapps/profile/createProfileWizard.dtd b/toolkit/locales/en-US/chrome/mozapps/profile/createProfileWizard.dtd
index 6d2ec5d94d1d..55384350acc7 100644
--- a/toolkit/locales/en-US/chrome/mozapps/profile/createProfileWizard.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/profile/createProfileWizard.dtd
@@ -7,7 +7,7 @@
-
+
diff --git a/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties b/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
index adac95a3351d..e36353a935c6 100644
--- a/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
@@ -14,30 +14,30 @@ restartMessageUnlockerMac=A copy of %S is already open. The running copy of %S w
# Profile manager
# LOCALIZATION NOTE (profileTooltip): First %S is the profile name, second %S is the path to the profile folder.
-profileTooltip=Profile: '%S' - Path: '%S'
+profileTooltip=Profile: ‘%S’ - Path: ‘%S’
pleaseSelectTitle=Select Profile
pleaseSelect=Please select a profile to begin %S, or create a new profile.
profileLockedTitle=Profile In Use
-profileLocked2=%S cannot use the profile "%S" because it is in use.\n\nTo continue, close the running instance of %S or choose a different profile.
+profileLocked2=%S cannot use the profile “%S” because it is in use.\n\nTo continue, close the running instance of %S or choose a different profile.
renameProfileTitle=Rename Profile
-renameProfilePrompt=Rename the profile "%S" to:
+renameProfilePrompt=Rename the profile “%S” to:
profileNameInvalidTitle=Invalid profile name
-profileNameInvalid=The profile name "%S" is not allowed.
+profileNameInvalid=The profile name “%S” is not allowed.
chooseFolder=Choose Profile Folder
profileNameEmpty=An empty profile name is not allowed.
-invalidChar=The character "%S" is not allowed in profile names. Please choose a different name.
+invalidChar=The character “%S” is not allowed in profile names. Please choose a different name.
deleteTitle=Delete Profile
-deleteProfileConfirm=Deleting a profile will remove the profile from the list of available profiles and cannot be undone.\nYou may also choose to delete the profile data files, including your settings, certificates and other user-related data. This option will delete the folder "%S" and cannot be undone.\nWould you like to delete the profile data files?
+deleteProfileConfirm=Deleting a profile will remove the profile from the list of available profiles and cannot be undone.\nYou may also choose to delete the profile data files, including your settings, certificates and other user-related data. This option will delete the folder “%S” and cannot be undone.\nWould you like to delete the profile data files?
deleteFiles=Delete Files
-dontDeleteFiles=Don't Delete Files
+dontDeleteFiles=Don’t Delete Files
-profileCreationFailed=Profile couldn't be created. Probably the chosen folder isn't writable.
+profileCreationFailed=Profile couldn’t be created. Probably the chosen folder isn’t writable.
profileCreationFailedTitle=Profile Creation failed
profileExists=A profile with this name already exists. Please choose another name.
profileExistsTitle=Profile Exists
diff --git a/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd b/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
index d969feab9fcb..e8c033476e0d 100644
--- a/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/update/updates.dtd
@@ -94,7 +94,7 @@
-
+
diff --git a/toolkit/locales/en-US/chrome/mozapps/update/updates.properties b/toolkit/locales/en-US/chrome/mozapps/update/updates.properties
index 97761ba291ff..70f4d8c066f7 100644
--- a/toolkit/locales/en-US/chrome/mozapps/update/updates.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/update/updates.properties
@@ -19,8 +19,8 @@ updateMoreInfoContentDownloading=Getting more details about %S %S…
# %2$S is the update version - provided by the update xml. Ex: version 10.0.5
# %3$S is the build identifier - provided by the update xml. Ex: 20081022033543
updateNightlyName=%1$S %2$S %3$S nightly
-incompatAddons_major=Some of your add-ons won't work with %1$S %2$S, and will be disabled. As soon as they are made compatible, %1$S will update and re-enable these add-ons:
-incompatAddons_minor=Some of your add-ons won't work with this update, and will be disabled. As soon as they are made compatible, %1$S will update and re-enable these add-ons:
+incompatAddons_major=Some of your add-ons won’t work with %1$S %2$S, and will be disabled. As soon as they are made compatible, %1$S will update and re-enable these add-ons:
+incompatAddons_minor=Some of your add-ons won’t work with this update, and will be disabled. As soon as they are made compatible, %1$S will update and re-enable these add-ons:
intro_major=Do you want to upgrade to %1$S %2$S now?
intro_minor=A security and stability update for %1$S is available:
diff --git a/toolkit/locales/en-US/chrome/passwordmgr/passwordmgr.properties b/toolkit/locales/en-US/chrome/passwordmgr/passwordmgr.properties
index 60bad1c3042a..0ed8c3153f63 100644
--- a/toolkit/locales/en-US/chrome/passwordmgr/passwordmgr.properties
+++ b/toolkit/locales/en-US/chrome/passwordmgr/passwordmgr.properties
@@ -17,7 +17,7 @@ updateLoginButtonAccessKey = U
# LOCALIZATION NOTE (rememberPasswordMsg):
# 1st string is the username for the login, 2nd is the login's hostname.
# Note that long usernames may be truncated.
-rememberPasswordMsg = Would you like to remember the password for "%1$S" on %2$S?
+rememberPasswordMsg = Would you like to remember the password for “%1$S” on %2$S?
# LOCALIZATION NOTE (rememberPasswordMsgNoUsername):
# String is the login's hostname.
rememberPasswordMsgNoUsername = Would you like to remember the password on %S?
@@ -40,11 +40,11 @@ notifyBarRememberPasswordButtonAccessKey = R
passwordChangeTitle = Confirm Password Change
# LOCALIZATION NOTE (updatePasswordMsg):
# String is the username for the login.
-updatePasswordMsg = Would you like to update the saved password for "%S"?
+updatePasswordMsg = Would you like to update the saved password for “%S”?
updatePasswordMsgNoUser = Would you like to update the saved password?
notifyBarUpdateButtonText = Update Password
notifyBarUpdateButtonAccessKey = U
-notifyBarDontChangeButtonText = Don't Change
+notifyBarDontChangeButtonText = Don’t Change
notifyBarDontChangeButtonAccessKey = D
userSelectText = Please confirm which user you are changing the password for
hidePasswords=Hide Passwords
diff --git a/toolkit/locales/en-US/chrome/pluginproblem/pluginproblem.dtd b/toolkit/locales/en-US/chrome/pluginproblem/pluginproblem.dtd
index 02dff270c8f9..cdca2666dfac 100644
--- a/toolkit/locales/en-US/chrome/pluginproblem/pluginproblem.dtd
+++ b/toolkit/locales/en-US/chrome/pluginproblem/pluginproblem.dtd
@@ -4,9 +4,9 @@
-
+
+ supported on this device. Use the unicode ellipsis char, \u2026, or use "..." if \u2026 doesn’t suit traditions in your locale. -->
@@ -35,7 +35,7 @@
-
+
diff --git a/toolkit/locales/en-US/chrome/search/search.properties b/toolkit/locales/en-US/chrome/search/search.properties
index 66a158c9187c..8aeed6a6c706 100644
--- a/toolkit/locales/en-US/chrome/search/search.properties
+++ b/toolkit/locales/en-US/chrome/search/search.properties
@@ -3,18 +3,18 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
addEngineConfirmTitle=Add Search Engine
-addEngineConfirmation=Add "%S" to the list of engines available in the search bar?\n\nFrom: %S
+addEngineConfirmation=Add “%S” to the list of engines available in the search bar?\n\nFrom: %S
addEngineAsCurrentText=Make this the c&urrent search engine
addEngineAddButtonLabel=Add
error_loading_engine_title=Download Error
# LOCALIZATION NOTE (error_loading_engine_msg2): %1$S = brandShortName, %2$S = location
error_loading_engine_msg2=%S could not download the search plugin from:\n%S
-error_duplicate_engine_msg=%S could not install the search plugin from "%S" because an engine with the same name already exists.
+error_duplicate_engine_msg=%S could not install the search plugin from “%S” because an engine with the same name already exists.
error_invalid_engine_title=Install Error
# LOCALIZATION NOTE (error_invalid_engine_msg): %S = brandShortName
-error_invalid_engine_msg=This search engine isn't supported by %S and can't be installed.
+error_invalid_engine_msg=This search engine isn’t supported by %S and can’t be installed.
suggestion_label=Suggestions