richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
ba14a74d
by Richard Pospesel at 2024-03-25T22:15:25+00:00
-
c14810dd
by Henry Wilkes at 2024-03-25T22:16:38+00:00
-
8f87ed96
by Henry Wilkes at 2024-03-25T22:17:23+00:00
7 changed files:
- browser/components/preferences/preferences.xhtml
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/locales/en-US/browser/base-browser.ftl
- browser/locales/jar.mn
- − tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
| ... | ... | @@ -58,6 +58,7 @@ |
| 58 | 58 | <link rel="localization" href="security/certificates/certManager.ftl"/>
|
| 59 | 59 | <link rel="localization" href="security/certificates/deviceManager.ftl"/>
|
| 60 | 60 | <link rel="localization" href="toolkit/updates/history.ftl"/>
|
| 61 | + <link rel="localization" href="browser/base-browser.ftl"/>
|
|
| 61 | 62 | |
| 62 | 63 | <link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/>
|
| 63 | 64 |
| ... | ... | @@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter( |
| 8 | 8 | "resource://gre/modules/SecurityLevel.jsm"
|
| 9 | 9 | );
|
| 10 | 10 | |
| 11 | -XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => {
|
|
| 12 | - let strings = {
|
|
| 13 | - // Generic terms
|
|
| 14 | - security_level: "Security Level",
|
|
| 15 | - security_level_standard: "Standard",
|
|
| 16 | - security_level_safer: "Safer",
|
|
| 17 | - security_level_safest: "Safest",
|
|
| 18 | - security_level_tooltip_standard: "Security Level: Standard",
|
|
| 19 | - security_level_tooltip_safer: "Security Level: Safer",
|
|
| 20 | - security_level_tooltip_safest: "Security Level: Safest",
|
|
| 21 | - // Shown only for custom level
|
|
| 22 | - security_level_custom: "Custom",
|
|
| 23 | - security_level_restore: "Restore Defaults",
|
|
| 24 | - security_level_learn_more: "Learn more",
|
|
| 25 | - // Panel
|
|
| 26 | - security_level_open_settings: "Settings…",
|
|
| 27 | - security_level_standard_summary:
|
|
| 28 | - "All browser and website features are enabled.",
|
|
| 29 | - security_level_safer_summary:
|
|
| 30 | - "Disables website features that are often dangerous, causing some sites to lose functionality.",
|
|
| 31 | - security_level_safest_summary:
|
|
| 32 | - "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
|
|
| 33 | - security_level_custom_heading: "Custom security level configured",
|
|
| 34 | - security_level_custom_summary:
|
|
| 35 | - "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
|
|
| 36 | - // Security level section in about:preferences#privacy
|
|
| 37 | - security_level_overview:
|
|
| 38 | - "Disable certain web features that can be used to attack your security and anonymity.",
|
|
| 39 | - security_level_list_safer: "At the safer setting:",
|
|
| 40 | - security_level_list_safest: "At the safest setting:",
|
|
| 41 | - // Strings for descriptions
|
|
| 42 | - security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.",
|
|
| 43 | - security_level_js_disabled:
|
|
| 44 | - "JavaScript is disabled by default on all sites.",
|
|
| 45 | - security_level_limit_typography:
|
|
| 46 | - "Some fonts and math symbols are disabled.",
|
|
| 47 | - security_level_limit_typography_svg:
|
|
| 48 | - "Some fonts, icons, math symbols, and images are disabled.",
|
|
| 49 | - security_level_limit_media:
|
|
| 50 | - "Audio and video (HTML5 media), and WebGL are click-to-play.",
|
|
| 51 | - };
|
|
| 52 | - let bundle = null;
|
|
| 53 | - try {
|
|
| 54 | - bundle = Services.strings.createBundle(
|
|
| 55 | - "chrome://browser/locale/securityLevel.properties"
|
|
| 56 | - );
|
|
| 57 | - } catch (e) {
|
|
| 58 | - console.warn("Could not load the Security Level strings");
|
|
| 59 | - }
|
|
| 60 | - if (bundle) {
|
|
| 61 | - for (const key of Object.keys(strings)) {
|
|
| 62 | - try {
|
|
| 63 | - strings[key] = bundle.GetStringFromName(key);
|
|
| 64 | - } catch (e) {}
|
|
| 65 | - }
|
|
| 66 | - }
|
|
| 67 | - return strings;
|
|
| 68 | -});
|
|
| 69 | - |
|
| 70 | 11 | /*
|
| 71 | 12 | Security Level Button Code
|
| 72 | 13 | |
| ... | ... | @@ -100,12 +41,30 @@ var SecurityLevelButton = { |
| 100 | 41 | if (!level) {
|
| 101 | 42 | return;
|
| 102 | 43 | }
|
| 103 | - const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : "";
|
|
| 104 | - this._button.setAttribute("level", `${level}${customStr}`);
|
|
| 105 | - this._button.setAttribute(
|
|
| 106 | - "tooltiptext",
|
|
| 107 | - SecurityLevelStrings[`security_level_tooltip_${level}`]
|
|
| 108 | - );
|
|
| 44 | + const custom = SecurityLevelPrefs.securityCustom;
|
|
| 45 | + this._button.setAttribute("level", custom ? `${level}_custom` : level);
|
|
| 46 | + |
|
| 47 | + let l10nIdLevel;
|
|
| 48 | + switch (level) {
|
|
| 49 | + case "standard":
|
|
| 50 | + l10nIdLevel = "security-level-toolbar-button-standard";
|
|
| 51 | + break;
|
|
| 52 | + case "safer":
|
|
| 53 | + l10nIdLevel = "security-level-toolbar-button-safer";
|
|
| 54 | + break;
|
|
| 55 | + case "safest":
|
|
| 56 | + l10nIdLevel = "security-level-toolbar-button-safest";
|
|
| 57 | + break;
|
|
| 58 | + default:
|
|
| 59 | + throw Error(`Unhandled level: ${level}`);
|
|
| 60 | + }
|
|
| 61 | + if (custom) {
|
|
| 62 | + // Don't distinguish between the different levels when in the custom
|
|
| 63 | + // state. We just want to emphasise that it is custom rather than any
|
|
| 64 | + // specific level.
|
|
| 65 | + l10nIdLevel = "security-level-toolbar-button-custom";
|
|
| 66 | + }
|
|
| 67 | + document.l10n.setAttributes(this._button, l10nIdLevel);
|
|
| 109 | 68 | },
|
| 110 | 69 | |
| 111 | 70 | /**
|
| ... | ... | @@ -159,7 +118,6 @@ var SecurityLevelButton = { |
| 159 | 118 | window.gNavToolbox.palette.querySelector("#security-level-button");
|
| 160 | 119 | // Set a label to be be used as the accessible name, and to be shown in the
|
| 161 | 120 | // overflow menu and during customization.
|
| 162 | - this._button.setAttribute("label", SecurityLevelStrings.security_level);
|
|
| 163 | 121 | this._button.addEventListener("command", () => this.openPopup());
|
| 164 | 122 | // set the initial class based off of the current pref
|
| 165 | 123 | this._configUIFromPrefs();
|
| ... | ... | @@ -213,21 +171,12 @@ var SecurityLevelPanel = { |
| 213 | 171 | settingsButton: document.getElementById("securityLevel-settings"),
|
| 214 | 172 | };
|
| 215 | 173 | |
| 216 | - document.getElementById("securityLevel-header").textContent =
|
|
| 217 | - SecurityLevelStrings.security_level;
|
|
| 218 | - this._elements.customName.textContent =
|
|
| 219 | - SecurityLevelStrings.security_level_custom;
|
|
| 220 | 174 | const learnMoreEl = document.getElementById("securityLevel-learnMore");
|
| 221 | - learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more;
|
|
| 222 | 175 | learnMoreEl.addEventListener("click", event => {
|
| 223 | 176 | window.openTrustedLinkIn(learnMoreEl.href, "tab");
|
| 224 | 177 | this.hide();
|
| 225 | 178 | event.preventDefault();
|
| 226 | 179 | });
|
| 227 | - this._elements.restoreDefaultsButton.textContent =
|
|
| 228 | - SecurityLevelStrings.security_level_restore;
|
|
| 229 | - this._elements.settingsButton.textContent =
|
|
| 230 | - SecurityLevelStrings.security_level_open_settings;
|
|
| 231 | 180 | |
| 232 | 181 | this._elements.restoreDefaultsButton.addEventListener("command", () => {
|
| 233 | 182 | this.restoreDefaults();
|
| ... | ... | @@ -268,11 +217,30 @@ var SecurityLevelPanel = { |
| 268 | 217 | |
| 269 | 218 | // Descriptions change based on security level
|
| 270 | 219 | this._elements.background.setAttribute("level", level);
|
| 271 | - this._elements.levelName.textContent =
|
|
| 272 | - SecurityLevelStrings[`security_level_${level}`];
|
|
| 273 | - this._elements.summary.textContent = custom
|
|
| 274 | - ? SecurityLevelStrings.security_level_custom_summary
|
|
| 275 | - : SecurityLevelStrings[`security_level_${level}_summary`];
|
|
| 220 | + let l10nIdLevel;
|
|
| 221 | + let l10nIdSummary;
|
|
| 222 | + switch (level) {
|
|
| 223 | + case "standard":
|
|
| 224 | + l10nIdLevel = "security-level-panel-level-standard";
|
|
| 225 | + l10nIdSummary = "security-level-summary-standard";
|
|
| 226 | + break;
|
|
| 227 | + case "safer":
|
|
| 228 | + l10nIdLevel = "security-level-panel-level-safer";
|
|
| 229 | + l10nIdSummary = "security-level-summary-safer";
|
|
| 230 | + break;
|
|
| 231 | + case "safest":
|
|
| 232 | + l10nIdLevel = "security-level-panel-level-safest";
|
|
| 233 | + l10nIdSummary = "security-level-summary-safest";
|
|
| 234 | + break;
|
|
| 235 | + default:
|
|
| 236 | + throw Error(`Unhandled level: ${level}`);
|
|
| 237 | + }
|
|
| 238 | + if (custom) {
|
|
| 239 | + l10nIdSummary = "security-level-summary-custom";
|
|
| 240 | + }
|
|
| 241 | + |
|
| 242 | + document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
|
|
| 243 | + document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
|
|
| 276 | 244 | },
|
| 277 | 245 | |
| 278 | 246 | /**
|
| ... | ... | @@ -358,25 +326,13 @@ var SecurityLevelPreferences = { |
| 358 | 326 | this._customNotification = document.getElementById(
|
| 359 | 327 | "securityLevel-customNotification"
|
| 360 | 328 | );
|
| 361 | - this._radiogroup = document.getElementById("securityLevel-radiogroup");
|
|
| 362 | - |
|
| 363 | - document.querySelector("#securityLevel-groupbox h2").textContent =
|
|
| 364 | - SecurityLevelStrings.security_level;
|
|
| 365 | - document.getElementById("securityLevel-overview").textContent =
|
|
| 366 | - SecurityLevelStrings.security_level_overview;
|
|
| 367 | 329 | document
|
| 368 | - .getElementById("securityLevel-learnMore")
|
|
| 369 | - .setAttribute("value", SecurityLevelStrings.security_level_learn_more);
|
|
| 370 | - |
|
| 371 | - document.getElementById("securityLevel-customHeading").textContent =
|
|
| 372 | - SecurityLevelStrings.security_level_custom_heading;
|
|
| 373 | - document.getElementById("securityLevel-customDescription").textContent =
|
|
| 374 | - SecurityLevelStrings.security_level_custom_summary;
|
|
| 375 | - const restoreDefaultsButton = document.getElementById(
|
|
| 376 | - "securityLevel-restoreDefaults"
|
|
| 377 | - );
|
|
| 378 | - restoreDefaultsButton.textContent =
|
|
| 379 | - SecurityLevelStrings.security_level_restore;
|
|
| 330 | + .getElementById("securityLevel-restoreDefaults")
|
|
| 331 | + .addEventListener("command", () => {
|
|
| 332 | + SecurityLevelPrefs.securityCustom = false;
|
|
| 333 | + });
|
|
| 334 | + |
|
| 335 | + this._radiogroup = document.getElementById("securityLevel-radiogroup");
|
|
| 380 | 336 | |
| 381 | 337 | this._radioOptions = Array.from(
|
| 382 | 338 | this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
|
| ... | ... | @@ -384,46 +340,7 @@ var SecurityLevelPreferences = { |
| 384 | 340 | return { container, radio: container.querySelector("radio") };
|
| 385 | 341 | }
|
| 386 | 342 | );
|
| 387 | - const descListItemsMap = {
|
|
| 388 | - safer: [
|
|
| 389 | - SecurityLevelStrings.security_level_js_https_only,
|
|
| 390 | - SecurityLevelStrings.security_level_limit_typography,
|
|
| 391 | - SecurityLevelStrings.security_level_limit_media,
|
|
| 392 | - ],
|
|
| 393 | - safest: [
|
|
| 394 | - SecurityLevelStrings.security_level_js_disabled,
|
|
| 395 | - SecurityLevelStrings.security_level_limit_typography_svg,
|
|
| 396 | - SecurityLevelStrings.security_level_limit_media,
|
|
| 397 | - ],
|
|
| 398 | - };
|
|
| 399 | - for (const { container, radio } of this._radioOptions) {
|
|
| 400 | - const level = radio.value;
|
|
| 401 | - radio.setAttribute(
|
|
| 402 | - "label",
|
|
| 403 | - SecurityLevelStrings[`security_level_${level}`]
|
|
| 404 | - );
|
|
| 405 | - container.querySelector(".summary").textContent =
|
|
| 406 | - SecurityLevelStrings[`security_level_${level}_summary`];
|
|
| 407 | - const descListItems = descListItemsMap[level];
|
|
| 408 | - if (!descListItems) {
|
|
| 409 | - continue;
|
|
| 410 | - }
|
|
| 411 | - const descrList = container.querySelector(
|
|
| 412 | - ".securityLevel-descriptionList"
|
|
| 413 | - );
|
|
| 414 | - // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
|
|
| 415 | - // when we switch to Fluent
|
|
| 416 | - for (const text of descListItems) {
|
|
| 417 | - let elem = document.createXULElement("description");
|
|
| 418 | - elem.textContent = text;
|
|
| 419 | - elem.className = "indent";
|
|
| 420 | - descrList.append(elem);
|
|
| 421 | - }
|
|
| 422 | - }
|
|
| 423 | 343 | |
| 424 | - restoreDefaultsButton.addEventListener("command", () => {
|
|
| 425 | - SecurityLevelPrefs.securityCustom = false;
|
|
| 426 | - });
|
|
| 427 | 344 | this._radiogroup.addEventListener("select", () => {
|
| 428 | 345 | SecurityLevelPrefs.securityLevel = this._radiogroup.value;
|
| 429 | 346 | });
|
| ... | ... | @@ -7,20 +7,35 @@ |
| 7 | 7 | level="top"
|
| 8 | 8 | class="cui-widget-panel panel-no-padding">
|
| 9 | 9 | <box class="panel-header">
|
| 10 | - <html:h1 id="securityLevel-header"></html:h1>
|
|
| 10 | + <html:h1
|
|
| 11 | + id="securityLevel-header"
|
|
| 12 | + data-l10n-id="security-level-panel-heading"
|
|
| 13 | + ></html:h1>
|
|
| 11 | 14 | </box>
|
| 12 | 15 | <toolbarseparator id="securityLevel-separator"></toolbarseparator>
|
| 13 | 16 | <vbox id="securityLevel-background" class="panel-subview-body">
|
| 14 | 17 | <html:p id="securityLevel-subheading">
|
| 15 | 18 | <html:span id="securityLevel-level"></html:span>
|
| 16 | - <html:span id="securityLevel-custom"></html:span>
|
|
| 19 | + <html:span
|
|
| 20 | + id="securityLevel-custom"
|
|
| 21 | + data-l10n-id="security-level-panel-custom-badge"
|
|
| 22 | + ></html:span>
|
|
| 17 | 23 | </html:p>
|
| 18 | 24 | <html:p id="securityLevel-summary"></html:p>
|
| 19 | - <html:a id="securityLevel-learnMore" href="about:manual#security-settings">
|
|
| 20 | - </html:a>
|
|
| 25 | + <html:a
|
|
| 26 | + id="securityLevel-learnMore"
|
|
| 27 | + data-l10n-id="security-level-panel-learn-more-link"
|
|
| 28 | + href="about:manual#security-settings"
|
|
| 29 | + ></html:a>
|
|
| 21 | 30 | </vbox>
|
| 22 | 31 | <hbox class="panel-footer">
|
| 23 | - <button id="securityLevel-settings"/>
|
|
| 24 | - <button id="securityLevel-restoreDefaults"/>
|
|
| 32 | + <button
|
|
| 33 | + id="securityLevel-settings"
|
|
| 34 | + data-l10n-id="security-level-panel-open-settings-button"
|
|
| 35 | + />
|
|
| 36 | + <button
|
|
| 37 | + id="securityLevel-restoreDefaults"
|
|
| 38 | + data-l10n-id="security-level-restore-defaults-button"
|
|
| 39 | + />
|
|
| 25 | 40 | </hbox>
|
| 26 | 41 | </panel> |
| ... | ... | @@ -2,37 +2,64 @@ |
| 2 | 2 | data-category="panePrivacy"
|
| 3 | 3 | data-subcategory="securitylevel"
|
| 4 | 4 | hidden="true">
|
| 5 | - <label><html:h2></html:h2></label>
|
|
| 5 | + <label>
|
|
| 6 | + <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2>
|
|
| 7 | + </label>
|
|
| 6 | 8 | <vbox flex="1">
|
| 7 | 9 | <description flex="1">
|
| 8 | - <html:span id="securityLevel-overview" class="tail-with-learn-more">
|
|
| 9 | - </html:span>
|
|
| 10 | - <label id="securityLevel-learnMore"
|
|
| 11 | - class="learnMore text-link"
|
|
| 12 | - is="text-link"
|
|
| 13 | - href="about:manual#security-settings"
|
|
| 14 | - useoriginprincipal="true"/>
|
|
| 10 | + <html:span
|
|
| 11 | + id="securityLevel-overview"
|
|
| 12 | + class="tail-with-learn-more"
|
|
| 13 | + data-l10n-id="security-level-preferences-overview"
|
|
| 14 | + ></html:span>
|
|
| 15 | + <label
|
|
| 16 | + id="securityLevel-learnMore"
|
|
| 17 | + class="learnMore text-link"
|
|
| 18 | + is="text-link"
|
|
| 19 | + data-l10n-id="security-level-preferences-learn-more-link"
|
|
| 20 | + href="about:manual#security-settings"
|
|
| 21 | + useoriginprincipal="true"
|
|
| 22 | + />
|
|
| 15 | 23 | </description>
|
| 16 | - <hbox id="securityLevel-customNotification"
|
|
| 17 | - class="info-box-container"
|
|
| 18 | - flex="1">
|
|
| 24 | + <hbox
|
|
| 25 | + id="securityLevel-customNotification"
|
|
| 26 | + class="info-box-container"
|
|
| 27 | + flex="1"
|
|
| 28 | + >
|
|
| 19 | 29 | <hbox class="info-icon-container">
|
| 20 | 30 | <image class="info-icon securityLevel-custom-warning-icon"/>
|
| 21 | 31 | </hbox>
|
| 22 | 32 | <vbox flex="1">
|
| 23 | - <label id="securityLevel-customHeading"/>
|
|
| 24 | - <description id="securityLevel-customDescription" flex="1"/>
|
|
| 33 | + <label
|
|
| 34 | + id="securityLevel-customHeading"
|
|
| 35 | + data-l10n-id="security-level-preferences-custom-heading"
|
|
| 36 | + />
|
|
| 37 | + <description
|
|
| 38 | + id="securityLevel-customDescription"
|
|
| 39 | + data-l10n-id="security-level-summary-custom"
|
|
| 40 | + flex="1"
|
|
| 41 | + />
|
|
| 25 | 42 | </vbox>
|
| 26 | 43 | <hbox align="center">
|
| 27 | - <button id="securityLevel-restoreDefaults"/>
|
|
| 44 | + <button
|
|
| 45 | + id="securityLevel-restoreDefaults"
|
|
| 46 | + data-l10n-id="security-level-restore-defaults-button"
|
|
| 47 | + />
|
|
| 28 | 48 | </hbox>
|
| 29 | 49 | </hbox>
|
| 30 | 50 | <radiogroup id="securityLevel-radiogroup">
|
| 31 | 51 | <vbox class="securityLevel-radio-option">
|
| 32 | - <radio value="standard"
|
|
| 33 | - aria-describedby="securityLevelSummary-standard"/>
|
|
| 52 | + <radio
|
|
| 53 | + value="standard"
|
|
| 54 | + data-l10n-id="security-level-preferences-level-standard"
|
|
| 55 | + aria-describedby="securityLevelSummary-standard"
|
|
| 56 | + />
|
|
| 34 | 57 | <vbox id="securityLevelSummary-standard">
|
| 35 | - <description class="summary indent" flex="1"/>
|
|
| 58 | + <description
|
|
| 59 | + class="summary indent"
|
|
| 60 | + flex="1"
|
|
| 61 | + data-l10n-id="security-level-summary-standard"
|
|
| 62 | + />
|
|
| 36 | 63 | </vbox>
|
| 37 | 64 | </vbox>
|
| 38 | 65 | <vbox class="securityLevel-radio-option">
|
| ... | ... | @@ -41,19 +68,59 @@ |
| 41 | 68 | - securityLevel-descriptionList is shown or hidden, its text content
|
| 42 | 69 | - is included or excluded from the accessible description,
|
| 43 | 70 | - respectively. -->
|
| 44 | - <radio value="safer"
|
|
| 45 | - aria-describedby="securityLevelSummary-safer"/>
|
|
| 71 | + <radio
|
|
| 72 | + value="safer"
|
|
| 73 | + data-l10n-id="security-level-preferences-level-safer"
|
|
| 74 | + aria-describedby="securityLevelSummary-safer"
|
|
| 75 | + />
|
|
| 46 | 76 | <vbox id="securityLevelSummary-safer">
|
| 47 | - <description class="summary indent" flex="1"/>
|
|
| 48 | - <vbox class="securityLevel-descriptionList indent"/>
|
|
| 77 | + <description
|
|
| 78 | + class="summary indent"
|
|
| 79 | + flex="1"
|
|
| 80 | + data-l10n-id="security-level-summary-safer"
|
|
| 81 | + />
|
|
| 82 | + <vbox class="securityLevel-descriptionList indent">
|
|
| 83 | + <description
|
|
| 84 | + class="indent"
|
|
| 85 | + data-l10n-id="security-level-preferences-bullet-https-only-javascript"
|
|
| 86 | + />
|
|
| 87 | + <description
|
|
| 88 | + class="indent"
|
|
| 89 | + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
|
|
| 90 | + />
|
|
| 91 | + <description
|
|
| 92 | + class="indent"
|
|
| 93 | + data-l10n-id="security-level-preferences-bullet-limit-media"
|
|
| 94 | + />
|
|
| 95 | + </vbox>
|
|
| 49 | 96 | </vbox>
|
| 50 | 97 | </vbox>
|
| 51 | 98 | <vbox class="securityLevel-radio-option">
|
| 52 | - <radio value="safest"
|
|
| 53 | - aria-describedby="securityLevelSummary-safest"/>
|
|
| 99 | + <radio
|
|
| 100 | + value="safest"
|
|
| 101 | + data-l10n-id="security-level-preferences-level-safest"
|
|
| 102 | + aria-describedby="securityLevelSummary-safest"
|
|
| 103 | + />
|
|
| 54 | 104 | <vbox id="securityLevelSummary-safest">
|
| 55 | - <description class="summary indent" flex="1"/>
|
|
| 56 | - <vbox class="securityLevel-descriptionList indent"/>
|
|
| 105 | + <description
|
|
| 106 | + class="summary indent"
|
|
| 107 | + flex="1"
|
|
| 108 | + data-l10n-id="security-level-summary-safest"
|
|
| 109 | + />
|
|
| 110 | + <vbox class="securityLevel-descriptionList indent">
|
|
| 111 | + <description
|
|
| 112 | + class="indent"
|
|
| 113 | + data-l10n-id="security-level-preferences-bullet-disabled-javascript"
|
|
| 114 | + />
|
|
| 115 | + <description
|
|
| 116 | + class="indent"
|
|
| 117 | + data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
|
|
| 118 | + />
|
|
| 119 | + <description
|
|
| 120 | + class="indent"
|
|
| 121 | + data-l10n-id="security-level-preferences-bullet-limit-media"
|
|
| 122 | + />
|
|
| 123 | + </vbox>
|
|
| 57 | 124 | </vbox>
|
| 58 | 125 | </vbox>
|
| 59 | 126 | </radiogroup>
|
| ... | ... | @@ -70,6 +70,7 @@ new-identity-dialog-confirm = |
| 70 | 70 | new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
|
| 71 | 71 | # Button to continue loading the home page, despite the warning message.
|
| 72 | 72 | new-identity-blocked-home-ignore-button = Load it anyway
|
| 73 | + |
|
| 73 | 74 | ## Preferences - Letterboxing.
|
| 74 | 75 | |
| 75 | 76 | # The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
|
| ... | ... | @@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled. |
| 94 | 95 | # "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
|
| 95 | 96 | letterboxing-enable-button =
|
| 96 | 97 | .label = Enable Letterboxing
|
| 98 | + |
|
| 99 | +## Security level toolbar button.
|
|
| 100 | +## Uses sentence case in English (US).
|
|
| 101 | +## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar.
|
|
| 102 | + |
|
| 103 | +security-level-toolbar-button-standard =
|
|
| 104 | + .label = Security level
|
|
| 105 | + .tooltiptext = Security level: Standard
|
|
| 106 | +security-level-toolbar-button-safer =
|
|
| 107 | + .label = Security level
|
|
| 108 | + .tooltiptext = Security level: Safer
|
|
| 109 | +security-level-toolbar-button-safest =
|
|
| 110 | + .label = Security level
|
|
| 111 | + .tooltiptext = Security level: Safest
|
|
| 112 | +# Used when the user is in some custom configuration that does not match a security level.
|
|
| 113 | +security-level-toolbar-button-custom =
|
|
| 114 | + .label = Security level
|
|
| 115 | + .tooltiptext = Security level: Custom
|
|
| 116 | + |
|
| 117 | +## Security level popup panel.
|
|
| 118 | + |
|
| 119 | +# Uses sentence case in English (US).
|
|
| 120 | +security-level-panel-heading = Security level
|
|
| 121 | + |
|
| 122 | +security-level-panel-level-standard = Standard
|
|
| 123 | +security-level-panel-level-safer = Safer
|
|
| 124 | +security-level-panel-level-safest = Safest
|
|
| 125 | +security-level-panel-learn-more-link = Learn more
|
|
| 126 | +# Button to open security level settings.
|
|
| 127 | +security-level-panel-open-settings-button = Settings…
|
|
| 128 | + |
|
| 129 | +## Security level settings.
|
|
| 130 | + |
|
| 131 | +security-level-preferences-heading = Security Level
|
|
| 132 | +security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
|
|
| 133 | +security-level-preferences-learn-more-link = Learn more
|
|
| 134 | +security-level-preferences-level-standard =
|
|
| 135 | + .label = Standard
|
|
| 136 | +security-level-preferences-level-safer =
|
|
| 137 | + .label = Safer
|
|
| 138 | +security-level-preferences-level-safest =
|
|
| 139 | + .label = Safest
|
|
| 140 | + |
|
| 141 | +## Security level summaries shown in security panel and settings.
|
|
| 142 | + |
|
| 143 | +security-level-summary-standard = All browser and website features are enabled.
|
|
| 144 | +security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality.
|
|
| 145 | +security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
|
|
| 146 | + |
|
| 147 | +## Security level feature bullet points.
|
|
| 148 | +## Shown in the settings under the security level when it is selected.
|
|
| 149 | + |
|
| 150 | +security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites.
|
|
| 151 | +security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled.
|
|
| 152 | +security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play.
|
|
| 153 | +security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites.
|
|
| 154 | +security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled.
|
|
| 155 | + |
|
| 156 | +## Custom security level.
|
|
| 157 | +## Some custom preferences configuration has placed the user outside one of the standard three levels.
|
|
| 158 | + |
|
| 159 | +# Shown in the security level panel as an orange badge next to the expected level.
|
|
| 160 | +security-level-panel-custom-badge = Custom
|
|
| 161 | +# Shown in the security level settings in a warning box.
|
|
| 162 | +security-level-preferences-custom-heading = Custom security level configured
|
|
| 163 | +# Description of custom state and recommended action.
|
|
| 164 | +# Shown in the security level panel and settings.
|
|
| 165 | +security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
|
|
| 166 | +# Button to undo custom changes to the security level and place the user in one of the standard security levels.
|
|
| 167 | +# Shown in the security level panel and settings.
|
|
| 168 | +security-level-restore-defaults-button = Restore defaults |
| ... | ... | @@ -32,5 +32,4 @@ |
| 32 | 32 | locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
|
| 33 | 33 | locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
|
| 34 | 34 | locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
|
| 35 | - locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
|
|
| 36 | 35 | % locale browser-region @AB_CD@ %locale/browser-region/ |
| 1 | -import fluent.syntax.ast as FTL
|
|
| 2 | -from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
|
|
| 3 | -from fluent.migrate.transforms import REPLACE
|
|
| 4 | - |
|
| 5 | - |
|
| 6 | -def migrate(ctx):
|
|
| 7 | - legacy_path = "newIdentity.properties"
|
|
| 8 | - |
|
| 9 | - ctx.add_transforms(
|
|
| 10 | - "base-browser.ftl",
|
|
| 11 | - "base-browser.ftl",
|
|
| 12 | - transforms_from(
|
|
| 13 | - """
|
|
| 14 | -menu-new-identity =
|
|
| 15 | - .label = { COPY(path, "new_identity") }
|
|
| 16 | - .accesskey = { COPY(path, "new_identity_menu_accesskey") }
|
|
| 17 | -appmenuitem-new-identity =
|
|
| 18 | - .label = { COPY(path, "new_identity_sentence_case") }
|
|
| 19 | -toolbar-new-identity =
|
|
| 20 | - .label = { COPY(path, "new_identity_sentence_case") }
|
|
| 21 | - .tooltiptext = { toolbar-new-identity.label }
|
|
| 22 | - |
|
| 23 | -new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
|
|
| 24 | -new-identity-dialog-never-ask-checkbox =
|
|
| 25 | - .label = { COPY(path, "new_identity_ask_again") }
|
|
| 26 | - |
|
| 27 | -new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
|
|
| 28 | -""",
|
|
| 29 | - path=legacy_path,
|
|
| 30 | - )
|
|
| 31 | - + [
|
|
| 32 | - # Replace "%S" with "{ -brand-short-name }" in confirm button.
|
|
| 33 | - FTL.Message(
|
|
| 34 | - id=FTL.Identifier("new-identity-dialog-confirm"),
|
|
| 35 | - value=None,
|
|
| 36 | - attributes=[
|
|
| 37 | - FTL.Attribute(
|
|
| 38 | - id=FTL.Identifier("label"),
|
|
| 39 | - value=REPLACE(
|
|
| 40 | - legacy_path,
|
|
| 41 | - "new_identity_restart",
|
|
| 42 | - {"%1$S": TERM_REFERENCE("brand-short-name")},
|
|
| 43 | - ),
|
|
| 44 | - ),
|
|
| 45 | - ],
|
|
| 46 | - ),
|
|
| 47 | - ],
|
|
| 48 | - ) |